Vinnaren i pepparkakshustävlingen!
2018-05-16, 10:57
  #1
Medlem
Kod:
<script>

var student = [];

student[0]= "Klara";
student[1]= "Andrea";
student[2]= "Emil";
student[3]= "Sarah";
student[4]= "Alicia";
student[5]= "Victor";
student[6]= "Thomas";
student[7]= "Robert";

var betyg = [];

betyg[0]= "A";
betyg[1]= "B";
betyg[2]= "C";
betyg[3]= "A";
betyg[4]= "D";
betyg[5]= "C";
betyg[6]= "E";
betyg[7]= "E";

function getGrade()
{
var namn = document.getElementById("namn").value;
var svar = student[namn];
var a = student.indexOf(namn);
    document.getElementById("namn").innerHTML = a;	
	
	for(var i = 0; i < betyg.length;i++)
	{
	if (namn==student)
	{	
document.getElementById("betyg").value=svar;
	}
}}
</script>


</head>

<body>

	<form name="f1">
	Skriv in ditt namn: <input type="text" id="namn" /><br/><br/>
	          <input type="button" value="få betyg" onclick="getGrade()" /><br/><br/>
	Ditt betyg: <input type="text" id="svar" />
	</form>

det här med att få allt att samarbeta! jag vill få fram betyget som hör till rätt person genomatt skriva in elevens namn :S
Citera
2018-05-16, 12:27
  #2
Moderator
Protons avatar
Citat:
Ursprungligen postat av mssoulstar
Kod:
<script>

var student = [];

student[0]= "Klara";
student[1]= "Andrea";
student[2]= "Emil";
student[3]= "Sarah";
student[4]= "Alicia";
student[5]= "Victor";
student[6]= "Thomas";
student[7]= "Robert";

var betyg = [];

betyg[0]= "A";
betyg[1]= "B";
betyg[2]= "C";
betyg[3]= "A";
betyg[4]= "D";
betyg[5]= "C";
betyg[6]= "E";
betyg[7]= "E";

function getGrade()
{
var namn = document.getElementById("namn").value;
var svar = student[namn];
var a = student.indexOf(namn);
    document.getElementById("namn").innerHTML = a;	
	
	for(var i = 0; i < betyg.length;i++)
	{
	if (namn==student)
	{	
document.getElementById("betyg").value=svar;
	}
}}
</script>


</head>

<body>

	<form name="f1">
	Skriv in ditt namn: <input type="text" id="namn" /><br/><br/>
	          <input type="button" value="få betyg" onclick="getGrade()" /><br/><br/>
	Ditt betyg: <input type="text" id="svar" />
	</form>

det här med att få allt att samarbeta! jag vill få fram betyget som hör till rätt person genomatt skriva in elevens namn :S
Det där ser ju skitkonstigt ut.

Det du försöker göra är att med hjälp av ett namn ta fram ett numeriskt index i en Array, det lär funka lite sisådär.

Ska du ha tag i ett index får du loopa igenom hela arrayen och för varje varv ta reda på om manm är det rätta innehållet i just det utrymmet, är det det så har du ju rätt index.

Därifrån kan du fortsätta.
Citera
2018-05-16, 12:46
  #3
Medlem
Skulle vilja säga stopp och belägg och påstå att det är rent vansinne att använda två arrayer på detta sätt. Om du vill få OK betyg på skoluppgiften så bör du använda multidimensionell array. Dvs i botten har du en array som i sin tur innehåller en array/objekt per person, som innehåller namn, betyg osv
Citera
2018-05-16, 14:01
  #4
Medlem
Instämmer med ovan. Lagra dina data så här:

Kod:
var students = [
  { name: 'Klara', grade: 'A' },
  { name: 'Andrea', grade: 'B' },
  { name: 'Emil', grade: 'C' },
  { name: 'Sarah', grade: 'A' },
];

Loopa sedan igenom och kontrollera om det inmatade namnet matchar ett lagrat namn.
Citera
2018-05-17, 09:36
  #5
Medlem
Kod:
<script>

var namn = [];

namn[0]= "Klara";
namn[1]= "Andrea";
namn[2]= "Emil";
namn[3]= "Sarah";
namn[4]= "Alicia";
namn[5]= "Victor";
namn[6]= "Thomas";
namn[7]= "Robert";

var betyg = [];

betyg[0]= "A";
betyg[1]= "B";
betyg[2]= "C";
betyg[3]= "A";
betyg[4]= "D";
betyg[5]= "C";
betyg[6]= "E";
betyg[7]= "E";

function getGrade()
{
	
var namnet = document.getElementById("namnet").value;	

	for(var i = 0; i < namn.length;i++)
	
	{
	if (namnet == namn[0])
	{
	document.getElementById("resultat").value= betyg[0];
	}
	else if (namnet == namn[1])
	{	
	document.getElementById("resultat").value= betyg[1];
	}
	else if (namnet == namn[2])
	{	
	document.getElementById("resultat").value= betyg[2];
	}
	else if (namnet == namn[3])
	{	
	document.getElementById("resultat").value= betyg[3];
	}
	else if (namnet == namn[4])
	{	
	document.getElementById("resultat").value= betyg[4];
	}
	else if (namnet == namn[5])
	{	
	document.getElementById("resultat").value= betyg[5];
	}
	else if (namnet == namn[6])
	{	
	document.getElementById("resultat").value= betyg[6];
	}
	else if (namnet == namn[7])
	{	
	document.getElementById("resultat").value= betyg[7];
	}
	else
	{
	document.getElementById("resultat").value = "du är inte inskriven";
	}

	}
}
</script>


</head>

<body>

	<form name="f1">
	Skriv in ditt namn: <input type="text" id="namnet" /><br/><br/>
	          <input type="button" value="få betyg" onclick="getGrade()" /><br/><br/>
	Ditt betyg: <input type="text" id="resultat" />
	</form>


Okey! jag löste det på detta sätt innan jag han läsa era inlägg.. min ser ju jäkligt mycket plotrigare ut än er.. min första tanke var att ha en till variabel som heter typ "var plats;" och på nått sätt få den till
"plats = i;" så man slapp ha så mycket "else if" satser men det funkade aldrig
Citera
2018-05-17, 09:45
  #6
Medlem
Kod:
<script>

var students = [
  { name: 'Klara', grade: 'A' },
  { name: 'Andrea', grade: 'B' },
  { name: 'Emil', grade: 'C' },
  { name: 'Sarah', grade: 'A' },
];

function getGrade()
{
	
var namnet = document.getElementById("namnet").value;	

	for(var i = 0; i < students.length;i++)
	
	{
	if (namnet == name)
	{
	document.getElementById("resultat").value= grade;
	}
	else
	{
	document.getElementById("resultat").value = "du är inte inskriven";
	}

	}
}


</script>


</head>

<body>

	<form name="f1">
	Skriv in ditt namn: <input type="text" id="namnet" /><br/><br/>
	          <input type="button" value="få betyg" onclick="getGrade()" /><br/><br/>
	Ditt betyg: <input type="text" id="resultat" />
	</form>

Nich testade din metod... men jag antar att jag "kopplar" fel någonstans.. för får bara fram else if satsens svar "du är inte inskriven"
Citera
2018-05-17, 11:59
  #7
Medlem
Citat:
Ursprungligen postat av mssoulstar
Kod:
<script>

var students = [
  { name: 'Klara', grade: 'A' },
  { name: 'Andrea', grade: 'B' },
  { name: 'Emil', grade: 'C' },
  { name: 'Sarah', grade: 'A' },
];

function getGrade()
{
	
var namnet = document.getElementById("namnet").value;	

	for(var i = 0; i < students.length;i++)
	
	{
	if (namnet == name)
	{
	document.getElementById("resultat").value= grade;
	}
	else
	{
	document.getElementById("resultat").value = "du är inte inskriven";
	}

	}
}


</script>


</head>

<body>

	<form name="f1">
	Skriv in ditt namn: <input type="text" id="namnet" /><br/><br/>
	          <input type="button" value="få betyg" onclick="getGrade()" /><br/><br/>
	Ditt betyg: <input type="text" id="resultat" />
	</form>

Nich testade din metod... men jag antar att jag "kopplar" fel någonstans.. för får bara fram else if satsens svar "du är inte inskriven"

Ja det där såg inte helt rätt ut. Du kan exempelvis inte bara hänvisa till name när du vill ha ett värde från de lagrade objekten. Skriv istället students[i].name eller liknande. Annars finns det ganska smidiga array-metoder du kan använda dig av för att loopa igenom listan med objekt, till exempel .forEach(). Här använder jag dock .some(), som stannar så fort du returnerar true. Således behöver du inte fortsätta scanna igenom alla namn om du redan har hittat rätt. Observera att i varje iteration ("omgång", "upprepning") av .some() kommer student innehålla ett objekt med en elev. Då kan vi skriva student.name för att få namnet och student.grade för att få betyget.

Kod:
var students = [
  { name: 'Klara', grade: 'A' },
  { name: 'Andrea', grade: 'B' },
  { name: 'Emil', grade: 'C' },
  { name: 'Sarah', grade: 'A' },
];

function getGrade() {
	var name = document.getElementById( 'namnet' ).value;

	students.some( function( student ) {
  	     if( student.name == name ) {
    	          document.getElementById("resultat").value = student.grade;
                  return true;
             }
         } );
}
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback