Kom ihåg mig?
Home Menu

Menu


Hämta text fält med getElementById...

Ämnesverktyg Visningsalternativ
Oläst 2008-04-08, 11:55 #1
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
Kod:
var a = 0;
for(i = 1; i < parseInt(document.getElementById('antal').value)+1; i++){
	a += parseInt(document.getElementById('p' + i).value);
}
document.write('<strong>Total:</strong> ' + a + ' kr <br />');
Finns det något sätt att ta reda på antalet textfält på sidan genom att loopa? istället som jag nu har, ett fast värde:

parseInt(document.getElementById('antal').value)+1 //hämta antalet textfält

Jag testade att loopa mig genom alla textfälten, men när man kommer till sista så vill det sig inte och skriptet dör helt.

Kod:
var i = 1;
var a = 0;
while(parseInt(document.getElementById('p' + i).value) != null){
	a += parseInt(document.getElementById('p' + i).value);
	i++;
}
grinditwp är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-04-08, 12:09 #2
jonny jonny är inte uppkopplad
Supermoderator
 
Reg.datum: Sep 2003
Inlägg: 6 941
jonny jonny är inte uppkopplad
Supermoderator
 
Reg.datum: Sep 2003
Inlägg: 6 941
du kanske skulle testa att document.getElementById('p'+i) inte är null innan du börjar använda det värdet till andra metoder?
jonny är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-04-08, 14:01 #3
martines avatar
martine martine är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Mar 2005
Inlägg: 767
martine martine är inte uppkopplad
Mycket flitig postare
martines avatar
 
Reg.datum: Mar 2005
Inlägg: 767
Jag vet inte riktigt vad du menar med textfält men kanske funktionen document.getElementsByNames() eller någon av de andra dom-funktionerna som man kan använda för att iterera genom dokumentstrukturen?

Det bästa är nog om du försöker lära dig mer om html-sidor som DOM-objekt och funktionerna som finns för detta i javascript.
martine är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-04-08, 16:19 #4
Syke Syke är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 297
Syke Syke är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 297
använd document.getElementsByTagName('input') i kombination med en if-sats för att se så det är ett textfält så borde du kunna få reda på antalet text-fält på sidan.
Syke är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-04-08, 16:38 #5
martines avatar
martine martine är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Mar 2005
Inlägg: 767
martine martine är inte uppkopplad
Mycket flitig postare
martines avatar
 
Reg.datum: Mar 2005
Inlägg: 767
Om det är input-elements värden du är ute efter så kan du också loopa igenom forms[x].elements[x] och se efter att forms[x].elements[i].type=='text' och då hämta värdena med forms[x].elements[i].value (forms[x].elements[x] har längden forms[x].elements[x].length).

Rättelse till mitt inlägg ovan: getElementsByNames() ska vara getElementsByName() men getElementsByTagName('input') är nog mer lämpat i det här fallet.
martine är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-04-09, 12:59 #6
turborakettis avatar
turboraketti turboraketti är inte uppkopplad
Medlem
 
Reg.datum: Feb 2008
Inlägg: 76
turboraketti turboraketti är inte uppkopplad
Medlem
turborakettis avatar
 
Reg.datum: Feb 2008
Inlägg: 76
Citat:
Originally posted by grinditwp@Apr 8 2008, 11:55
Kod:
var i = 1;
var a = 0;
while(parseInt(document.getElementById('p' + i).value) != null){
	a += parseInt(document.getElementById('p' + i).value);
	i++;
}
Tänket i din while-loop är väl inte fel, men innehåller några skummiteter:
parseInt returnerar antingen ett tal eller NaN. Alltså evaluerar parseInt(something)!=null alltid true.
Om du vill kolla på en egenskap hos ett objekt som du inte vet om det finns måste du kolla om det finns först, t ex: myObj.value=="val" resulterar i error om inte myObj finns. Skriv istället myObj&&(myObj=="val").

Nedanstående snurra borde fungera:
Kod:
var i = 1;
var a = 0;
while( e = document.getElementById('p' + i++) )
    if( e.value && isFinite(e.value) )
        a += parseInt(e.value);
turboraketti är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 03:01.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017