12. marts 2004 - 19:34Der er
24 kommentarer og 1 løsning
Elementer på siden
Hej,
hvordan finder jeg antal select-tags på en HTML via Javascript? jeg har et script som skal løbe de valgte værdier i en række select-bokse igennem..og til den for() løkke skal jeg bruge det samlede antal elementer.
Ah...den er ellers meget tæt på. Men jeg glemte vidst at tilføje at det ikke er ALLE select tags :( Du får pointsne anyway...men hvis du kan hjælpe med det her...sååh... :D
..og bliver kaldt via <script language="JavaScript" src="functions.js" type="text/javascript"></script>
Hvad gør jeg galt? (ved at jeg ikke har rette arrayet med de elementer som ikke skal medregnes. Er linjen forms[0].total.value += arrSelect[i].id.value; korrekt?
Nej det har du ret i. Siden skal beregne en total af nogle valg der er truffet i select-bokse. Et nyt aspekt i denne sag er værdien i select boksen faktisk ikke er den som skal beregnes...men værdien af select-boksen * en værdi som jeg endnu ikke ved hvor skal lagres. Værdien skal tilknyttes select-boksen.
Ja...det er det, men jeg fandt først ud af det senere. De skjulte felter kan tælles nemmere end de andre fordi jeg ikke har andre skjulte :) super! Tak for hjælpen.
det var ikke en opfordring til at lukke dit spm (med mindre du faktisk har fået den hjælp du ønsker), men mere som en bemærkning om at du måske burde oplyse om at dine videre spm bevæger sig "udenom tema". Jeg har intet imod at hjælpe mere, men en tilkendegivelse fra din side på en "jeg har opdaget at jeg har et større problem som jeg ikke helt ved hvordan jeg skal løse"-agtig måde, ville være rart, for så viser du at du ikke tager hjælpen her inde for givet ;o]
Endnu en gang har du ret, og denne information er hermed givet videre. Og jeg ved det til næste gang.
Mit problem lyder nu på en syntaks fejl på linje 1. Den linje må være i min functions.js, da første linje i hoveddokumentet ser sådan ud: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
Hele functions.js ser således ud:
<script type="text/javascript"> <!-- var strElementerSomIkkeSkalMed = "en,tre"; function updatetotal() { forms[0].total.value = 0;
var arrSelect = document.getElementsByTagName( "select" ); for( i = 0; i < arrSelect.length; i++ ) { if( strElementerSomIkkeSkalMed.indexOf( arrSelect[i].id ) == -1 ) { forms[0].total.value += arrSelect[i].options[ arrSelect[i].selectedIndex ].value;
} } } // --> </script>
Hvor fejlen ligger henne er jeg godt nok på bar bund med...
Det løste problemet. og så skulle jeg lige tilføje "document" foran forms[0]. Nu er problemet at den behandler værdierne som strenge, den ligger dem ikke sammen. (Har fjernet <script>)
Fordi du så tager udgangspunkt i en tekst-værdi for det er et form-felts value altid ...
parseInt(forms[0].total.value) er næsten det samme som +forms[0].total.value, nemlig en type-konvertering ...
Forskellen er, at parseInt altid returnerer et tal (0, hvis der ikke er et gyldigt tal i starten af teksten !-), men den vil så kun returnere hele tal (parseFloat skal bruges til decimal-tal)
+noget vil kun virke som forventet, hvis man er helt sikker på at noget indeholder en tal-værdi, men så er den til gengæld også ligeglad med formatet (og evt. decimaler m.v.)
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.