Just nu i M3-nätverket
Gå till innehåll

Spara värde i return och ta emot det i annan funktion


Jompan

Rekommendera Poster

Jag har en uppgift som jag gått bet på. Trots ett flertal varianter som försök har jag inte lyckats. Problemet är detta:

 

Först väljs en av två knappar som ger röd eller grön boll, och svaret ska skrivas ut i klartext i span-diven. (Värdet ska sparas i en global variabel.)

Sen väljs slumptalet 1 eller 2 som lägger ut 3 rader med 5 bollar i varje i slumpat antal färger. (Bollarnas bilder ligger i katalogen pics.)

 

I samma funktion ska sen i result-diven anges vilken färg det blev flest bollar av, plus bedömning om det första färgvalet blev rätt eller fel. (Return-värdet ska hämtas.)

Det är den sista hanteringen jag har gått bet på. Jag får samma svar på alla, nämligen att 'gissningen var fel'.

<p>Klicka på den färg som du tror det blir flest av.</p>

<div id="btnPanel">
	<button id="btn1" onclick="klickKnapp(this)">Röd</button>
	<button id="btn2" onclick="klickKnapp(this)">Grön</button>
	<button id="btn3">Blå</button>
	<span id="textSelection"></span>

	<hr>

	<button id="btnRandom" onclick="visaBilder()">Slumpa fram färgade bollar</button>
</div>

<div id="result"></div>
<div id="imgBoard">
	<img id="img1" alt="boll" src="pics/0.png">
	<img id="img2" alt="boll" src="pics/0.png">
	<img id="img3" alt="boll" src="pics/0.png">
	<img id="img4" alt="boll" src="pics/0.png">
	<img id="img5" alt="boll" src="pics/0.png">
	<img id="img6" alt="boll" src="pics/0.png">
	<img id="img7" alt="boll" src="pics/0.png">
	<img id="img8" alt="boll" src="pics/0.png">
	<img id="img9" alt="boll" src="pics/0.png">
	<img id="img10" alt="boll" src="pics/0.png">
	<img id="img11" alt="boll" src="pics/0.png">
	<img id="img12" alt="boll" src="pics/0.png">
	<img id="img13" alt="boll" src="pics/0.png">
	<img id="img14" alt="boll" src="pics/0.png">
	<img id="img15" alt="boll" src="pics/0.png">
</div>

var nr1Tag, nr2Tag; 
var antalRod=0, antalGron=0;
var randomNumber=0;
var fargTag;

function init() {
	nr1Tag = document.getElementById("btn1");
	nr2Tag = document.getElementById("btn2");
} 
window.onload = init;

function klickKnapp(nr) 
{
if (nr == nr1Tag) fargTag = "Du har valt röda bollar.";
if (nr == nr2Tag) fargTag = "Du har valt gröna bollar.";
{   
document.getElementById("textSelection").innerHTML = fargTag;
return fargTag;
}
}

function visaBilder() {
	var i, bild, resStr;
	var bollar = new Array(15);
	
	for (i=0; i<bollar.length; i=i ) { 			
	var randomNumber = Math.floor(2*Math.random())+1;
	var i = i+1;
        if (randomNumber == 1) {
            antalRod++;
            bild="pics/1.png";
        } 
		else {
            antalGron++;
            bild="pics/2.png";
        }
document.getElementById("img"+i).src="pics/"+randomNumber+".png";
			
if (antalRod>antalGron && fargTag === nr1Tag) 
{
resStr = "Det blev fler röda bollar än gröna. Du gissade rätt." ;
}
if (antalRod>antalGron && fargTag !== nr1Tag) 
{
resStr = "Det blev fler röda bollar än gröna. Du gissade fel." ;
}
if (antalGron>antalRod && fargTag === nr2Tag) 
{
resStr = "Det blev fler gröna bollar än röda. Du gissade rätt." ;
}
if (antalGron>antalRod && fargTag !== nr2Tag) 
{
resStr = "Det blev fler gröna bollar än röda. Du gissade fel." ;
}
		
document.getElementById("result").innerHTML = resStr;
	}
}

Finns det någon kunnig person som kan hjälpa mig?

Länk till kommentar
Dela på andra webbplatser

Det blir alltid fel eftersom du jämför äpplen och päron. Använd konsollen och logga ut lite värden så kommer du se vad jag menar. När visaBilder körs, vad är fargTag då? Jo, det är en textsträng som säger "Du har valt blabla bollar". Och vad är nr1Tag och nr2Tag? Inte strängar. De är DOM-element. Du sätter ju dess värden med document.getElementById, eller hur? Så de är element, inte texter. Du kan inte jämföra dem med en textsträng och därför kommer dina if-satser alltid att bli false.

Länk till kommentar
Dela på andra webbplatser

Tack, men jag förstår ändå inte hur jag ska göra, för så kunnig är jag inte.

jag tycker koden är logisk, men uppenbart är den fel.

 

Hur förvandlar jag textsträngarna till de nödvändiga elementen?

Länk till kommentar
Dela på andra webbplatser

Du kan lösa detta på flera olika sätt. Ett sätt är att introducera en ny variabel som motsvarar den knapp som blev klickad. Jämför den sedan med nr1Tag eller nr2Tag och strunta i att jämföra fargTag så kommer det funka.

 

Alltså. Ny variabel i början av skriptet:

var valdFarg;

Sätt dess värde till den knapp som blev klickad:

function klickKnapp(nr) {
  valdFarg = nr; // Nu kommer valdFarg vara samma som knappen.

  if (nr === nr1Tag) {
    fargTag = "Du har valt röda bollar.";
  }
  else {
    fargTag = "Du har valt gröna bollar.";
  }
   
  document.getElementById("textSelection").innerHTML = fargTag;
}

Och till slut i dina if-satser kan du jämföra såhär (visar bara en av dem):

if (antalRod > antalGron && valdFarg === nr1Tag) {
  resStr = "Det blev fler röda bollar än gröna. Du gissade rätt.";
}
Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...