Till Startsidan

Skaffa webbhotell?
Läs JavaScript.nu's jämförelse av webbhotell.
Med priser från
9 kr / månad.

Genom ett samarbete får alla JavaScript.nu-
besökare dessutom 100 kr i rabatt vid beställning.


Re: returnera värde som ska visas i form

[ JavaScript.nu's Forum ] [ Viktigt om forumet ] [ JavaScript.nu's Startsida ]


Forum / returnera värde som ska visas i formulär
 
Nä, jag får det inte att funka...
Nu är ju koden lite rörig, eftersom jag suttit och pillat fram och tillbaka.. :)

En array ska jag göra senare av poängräkningen, men känner att jag vill göra FI grejen först, så att jag har bättre koll sen. :)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>DICE</title>
<link rel="stylesheet" type="text/css" href="dice1.css" />
<script type="text/javascript" language="javascript">


function showPict(randNumber,imgNr){
var imgUrl = "dice/" + randNumber + ".gif";
document.getElementById("largeImg" + imgNr).src = imgUrl;
}
//End function

function randomInteger() {
randNumber = Math.random();
randNumber = Math.floor(6*randNumber)+1;
return randNumber;
}
//End function

function showRandomPict(imgNr) {
pictNr = randomInteger(6);
showPict(pictNr,imgNr);
return pictNr;
}
//End function

function threePict(pictNr,imgNr,randNumber) {
showRandomPict(1);
showRandomPict(2);
showRandomPict(3);

score = showRandomPict(1) + showRandomPict(2);
points = score;
document.dice.result = + points;
}
//void threePict( int pictNr, int imgNr, int randNumber )

//if( (points == points2) || (points == points3) || (points2 == points3) )
points + points2 + points3;
//End function


</script>
</head>
<body>
<h1>DICE GAMBLING</h1>
<hr id=roller />
<p> Roll The Dice! </p>
<div id="largeImg">
<a href="#" return false;>
<img name="largeImg1" src="dice/1.gif" alt="Ett" onclick="showRandomPict(1)" />
</a>
<a href="#" return false;>
<img name="largeImg2" src="dice/1.gif" alt="Ett" onclick="showRandomPict(2)" />
</a>
<a href="#" return false;>
<img name="largeImg3" src="dice/1.gif" alt="Ett" onclick="showRandomPict(3)" />
</a>
<p />
<p><input type="button" value="Roll All Dices" onclick="threePict()" />
</div>
<div id="dice">
<form type="text" name="result">
<option value="Score:" +points+ />
</form>
</div>
</body>
</html>


 
När du använder document.getElementById måste du ange namnen på elementen som id="", inte name="", jag antar att det är detta du har missat. (Om inte bör du nog posta hela koden.)

Och med den uppgiften är detta nog den enklaste lösningen:
- Ha en global array (om du inte lärt dig det än kan du använda tre separata variabler också, eller så kan du bara kolla upp det för det är inte så svårt) som innehåller värdena på tärningsslagen.
- Låt showRandomPict ändra rätt värde i arrayen (typ, dice[imgNr-1] = pictNr;).
- I slutet på showRandomPict lägger du lite kod som beräknar poängen utefter vad arrayen innehåller, och visar den i ett span.

 
När jag skriver:
document.getElementById("largeImg" + imgNr)
får jag att det "is null" i firebug.
Vad har jag gjort för fel då?

<i>Lägg till kod i funktionen i steg 2( i mitt fall threePict), så att tärningarnas värden jämförs och en poängsumma beräknas enligt följande: om två tärningar är lika, får man summan av dessa två tärningar; om alla tre tärningarna är lika, får man dubbla summan av tärningarna; i övrigt är poängen 0. Den framräknade poängen visas i den span-tagg eller textfält som du la till i HTML-koden.</i>

Detta står i uppgiften, vilka värden ska jag ha med (i vad jag gissar I-satserna)?


  Jag ser inte riktigt sammanhanget i vilket du skulle vilja använda ett returvärde av showRandomPict? Antagligen kan du bara returnera pictNr, men hur du sedan lagrar returnvärdena i variabler beror på vad du vill göra med dem.
Din kod använder för övrigt en del utdaterade/felaktiga sätt att skriva saker på, så här är bättre:

<!DOCTYPE html> (<- HTML5-doctypen)
<html>
<head>
<meta charset="UTF-8"> (<- förenklad charset-deklaration i HTML5, och den standarden kräver inte heller att du avslutar tomma taggar med />)
<title>DICE</title>
<link rel="stylesheet" type="text/css" href="Dice1.css">
<script type="text/javascript"> (<- language="javascript" behövs inte längre)

function showPict(randNumber, imgNr){
var imgUrl = "dice/" + randNumber + ".gif"; (<- deklarera imgUrl som 'var' för att den inte ska bli global, och du behöver inga if-satser om du ändå bara gör samma sak (lägger in slumptalet i strängen))

document.getElementById("largeImg" + imgNr).src = imgUrl; (<- document["namn"] är väldigt föråldrat; document.getElementById bör användas i stället. Notera att id's används i stället för name's på elementen)
}

function randomInteger(randNumber) {
return Math.floor(6*Math.random())+1; (<- du kan ha allt på en rad (tempvariabler är onödiga ibland), och undvik förresten att deklarera variabler med 'var' två gånger)
}

function showRandomPict(imgNr) {
var pictNr = randomInteger(6);
showPict(pictNr, imgNr);
return pictNr; (<- om du ska ha ett returvärde är det nog detta)
}

</script>
</head>
<body>

Roll The Dice! </p>
<div id="largePict">
<a href="#" onclick="return false;"> (<- du menade onclick="return false;", inte bara return false; som tolkas som två tomma HTML-attribut med namn "return" och "false;")
<img id="largeImg1" src="dice/1.gif" alt="Tärningsslag" onclick="showRandomPict(1)"> (<- mer beskrivande alt-text, eftersom den inte uppdateras senare)
</a>
<a href="#" onclick="return false;">
<img id="largeImg2" src="dice/1.gif" alt="Tärningsslag" onclick="showRandomPict(2)">
</a>
<a href="#" onclick="return false;">
<img id="largeImg3" src="dice/1.gif" alt="Tärningsslag" onclick="showRandomPict(3)">
</a>
</div>
<div id="dice">


<a href="#" onclick="showRandomPict(1); showRandomPict(2); showRandomPict(3); return false;">Roll all Dice</a> ("dice" är plural av "die", "dices" är inget ord)
</p>

(<- det känns semantiskt, möjligen standardsmässigt, fel att ha <form> i

, men jag är osäker)
<form name="result"> (<- ??)
</form>
</p>
</div>
</body>
</html>

Simon

 
Hej!
Jag har lite problem med en uppgift jag har fått i skolan som gäller js.
Jag har kommit en bit på vägen, men nu gäller det att returnera ett värde från funktionen shovRandomPict och sedan ska jag spara de returnerade värdena i variabler.

Jag har suttit och fixat med det...men kommer inte på nån lösning.

Skulle verkligen uppskatta hjälp. :)

Här är koden:

<snip>


Postat av L8 (83.188.244.38) den 16 April, 2011 kl 15:52:02.
Som svar på: Re: returnera värde som ska visas i form postat av Simon den 16 April, 2011 kl 15:26:48.


Svar på inlägget:


Posta ett svar:

Namn:
E-Mail:
Rubrik:
Meddelande:
Ja tack, maila mig om andra svarar på detta inlägg.
Ja tack, maila mig om andra svarar på mitt inlägg.


[ JavaScript.nu's Forum ] [ Viktigt om forumet ] [ JavaScript.nu's Startsida ]






Copyright © Omid Rouhani 1997-2022; Alla rättigheter reserverade.
Guider: [ HTML guide ] - [ JavaScript guide ] - [ DHTML guide ] - [ Perl guide ] - [ Sitemap ]