Avatar billede avnes Nybegynder
24. juni 2001 - 17:31 Der er 4 kommentarer og
1 løsning

Problem med if

function new_balance() {
if (document.forms[0].elements[13].value >= document.forms[0].elements[14].value) {
document.forms[0].elements[15].value = document.forms[0].elements[13].value - document.forms[0].elements[14].value;
}
else { alert(\'fejl\');}
}


Problemet er at elements[15] altid bliver regnet ud, og min alert køres aldrig.
Avatar billede jespernaur Nybegynder
24. juni 2001 - 17:46 #1
For at blive klogere, kan du (med alert) udskrive værdien af elements[13] og elements[14] INDEN if-sætningen.
Avatar billede avnes Nybegynder
24. juni 2001 - 17:48 #2
Det har jeg allerede forsøgt, men selv i de tilfelder der elements[14] er større end elements[13] regnes elements[15] ud. Merkelig, men sant.
Avatar billede avnes Nybegynder
24. juni 2001 - 17:56 #3
alert(document.forms[0].elements[13].value) gir 750
alert(document.forms[0].elements[14].value) gir 20000

men allikvel regnes elements[15] ud.

Hvsi jeg laver om min javascript sådan:
function new_balance() {
if (750 >= document.forms[0].elements[14].value) {
document.forms[0].elements[15].value = document.forms[0].elements[13].value - document.forms[0].elements[14].value;
}
else { alert(\'fejl\');}
}


så virker den utrolig nok, men jeg kan ikke lave om på det, for elements[13] er ikke altid = 750
Avatar billede jakoba Nybegynder
24. juni 2001 - 17:58 #4
Lad os starte med at skrive lidt om så vi kan se hvad der sker:

function new_balance() {
  var elm = document.forms[0].elements;
  if (elm[13].value >= elm[14].value) {
      elm[15].value = elm[13].value - elm[14].value;
  }
  else { alert(\'fejl\'); }
}

helt fin kode. logisk burde det virke.
inden i if-sætningen trækker du 2 felter fra ninanden, så jeg gætter det er tekstfelter der bliver skrevet tal i.

Så skal vi holde øje med HVAD vi sammenligner.
strengen \"123456789\" er mindre end strengen \"2\" (\"1\" kommer før i ascii alfabetet end \"2\")
tallet 2 kommer naturligvis før tallet 123456789

Så du komme til at fortælle javascript at de to værdier skal sammenlignes som tal.

function new_balance() {
  var elm = document.forms[0].elements;
  if ( parseInt(elm[13].value) >= parseInt(elm[14].value) ) {
      elm[15].value = elm[13].value - elm[14].value;
  }
  else { alert(\'fejl\'); }
}

Hvis mit gætteri er korrekt skulle det være nok.

mvh JakobA


Avatar billede avnes Nybegynder
24. juni 2001 - 18:04 #5
parseInt var løsningen :-)
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