Avatar billede SimonBStoevring Nybegynder
15. november 2009 - 19:58 Der er 2 kommentarer og
1 løsning

Hent værdi fra JavaScript genereret input

Hej.

Jeg er i gang med at lave en slags terning, hvortil brugeren selv kan tilføje sider med værdier.

For at tilføje en side, tilføjer man et inputfelt, som man så indtaster sidens værdi i.
Siderne rækker uendeligt og en side - altså et inputfelt - laves og vises på siden med JavaScript.

Når brugeren trykker "Roll the dice" ønsker jeg, at der vælges et tilfældigt inputfelt hvorefter værdien af inputfeltet udskrives.

Mit problem er, hvordan jeg får værdierne fra et felt, som genereres med JavaScript.

Her er koden, jeg benytter nu:

<form id="myForm" method="post">
<hr size="1" />
<input type="button" value="Add a side to the dice" onclick="addOption();" /> <input type="button" value="Roll the dice!" onClick="roll();" /> <br />
Sides: <br />
</form>
<script> 
var optionNumber = 1;

function addOption() { 
    var theForm = document.getElementById("myForm");
    var newOption = document.createElement("input");
    newOption.name = "side["+optionNumber+"]";
    newOption.type = "text";
    theForm.appendChild(newOption);
    optionNumber++;
}
 
function roll() {
    document.getElementById('siderolled').innerHTML = document.getElementById('side[1]').value;
}
</script>

I ovenstående eksempel har ejg sat den til altid at udskrive værdien fra første fel for lettere at kunne teste det, men jeg går ud fra, at når jeg kommer dertil, hvor jeg skal vælge et tilfældigt felt, er det blot at benytte:

side['+Math.floor(Math.random()*(optionNumber+1))+']'

Kan nogen hjælpe mig med at få udskrevet værdien af et felt?

På forhånd tak.
Simon B. Støvring
Avatar billede intenz Novice
15. november 2009 - 21:50 #1
Du er tæt på.
Du bruger:
newOption.name = "side["+optionNumber+"]";

og henter elementet med:
getElementById('side[1]')

Altså name det ene sted og id det andet. Brug i stedet:
newOption.id = "side["+optionNumber+"]";

Og så mangler du f.eks. en div med ID 'siderolled' til at outputte resultatet.
Ændre til:
Sides: <div id="siderolled"></div><br />

Så virker det.
Avatar billede SimonBStoevring Nybegynder
16. november 2009 - 06:50 #2
Mange tak skal du have!

Det var en meget dum fejl.

Smider du ikke lige et svar?
Avatar billede intenz Novice
16. november 2009 - 10:30 #3
svar :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester