Gå til innhold

(variabeltyper?) oppdatere forms [LØST]


Anbefalte innlegg

Hvorfor funker ikke denne her?

 

altså, plussknappen funker ikke, men minusknappen funker...

når verdien er 0 og jeg trykker pluss så gir den meg 01, 011, 0111 (behandler den som en tekststreng), mens minus subtraherer som "normalt"

 

men om jeg erstatter

felt.value = felt.value + 1;

med

felt.value = felt.value - (-1);

så funker den...noen som har en god forklaring?

 

<head>
 <script language="JavaScript">
   function SymError() { return true; }
   window.onerror = SymError;
   var SymRealWinOpen = window.open;
   function SymWinOpen(url, name, attributes) { return (new Object()); }
   window.open = SymWinOpen;
 </script>

 <script LANGUAGE="JavaScript">
   function feltPluss(felt) {
     felt.value = felt.value + 1;
   }
   function feltMinus(felt) {
     felt.value = felt.value - 1;
   }
 </script>
</head>

<form>

 <input type="text" name="str" value="0">
 <input type="button" onClick="feltPluss(this.form.str)" value="+">
 <input type="button" onClick="feltMinus(this.form.str)" value="-">

</form>


<script language="JavaScript">
var SymRealOnLoad;
var SymRealOnUnload;

function SymOnUnload()
{
window.open = SymWinOpen;
if(SymRealOnUnload != null)
   SymRealOnUnload();
}

function SymOnLoad()
{
if(SymRealOnLoad != null)
   SymRealOnLoad();
window.open = SymRealWinOpen;
SymRealOnUnload = window.onunload;
window.onunload = SymOnUnload;
}

SymRealOnLoad = window.onload;
window.onload = SymOnLoad;
</script>

Endret av elminzter
Lenke til kommentar
Videoannonse
Annonse

Det er fordi alle verdier fra felt er av datatype string. I javascript er det jo slik at + brukes for å legge noe til en streng. F.eks dersom du har "1"+1 blir dette 11, akkurat som at "bilde"+1 blir bilde1.

Her er to løsninger på problemet ditt:

function feltPluss(felt) {
    felt.value = parseInt(felt.value) + 1;
}

parseInt gjør en string (streng) om til int (heltall)

Eller løsningen som jeg ville valgt:

function feltPluss(felt) {
    felt.value++;
}

Mindre kode ;)

Også ville jeg nok også brukt:

  function feltMinus(felt) {
    felt.value--;
  }

 

 

EDIT: /code tag

/k

Endret av kakkle
Lenke til kommentar

hehe, jaja, det hele var bare en liten test...det hele endte opp med

 

 <script language="javascript">
   function incStat(field,cost,lim1,lim2,lim3,lim4,step,tot) {
     var vfield = parseInt(field.value);
     var vcost = parseInt(cost.value);
     var vlim1 = parseInt(lim1.value);
     var vlim2 = parseInt(lim2.value);
     var vlim3 = parseInt(lim3.value);
     var vlim4 = parseInt(lim4.value);
     var vstep = parseInt(step.value);
     var vtot = parseInt(tot.value);
   
     if (vcost <= vtot) {
       field.value = vfield+1;
       tot.value = vtot-vcost;
       step.value = vstep+1;
       vstep++;
       
       if (vlim4 == vstep) {
         cost.value = vcost+1;
       }
       else if (vlim3 == vstep) {
         cost.value = vcost+1;
       }
       else if (vlim2 == vstep) {
         cost.value = vcost+1;
       }
       else if (vlim1 == vstep) {
         cost.value = vcost+1;
       }
       
     }
   }
   function decStat(field,cost,lim1,lim2,lim3,lim4,step,tot) {
     var vfield = parseInt(field.value);
     var vcost = parseInt(cost.value);
     var vlim1 = parseInt(lim1.value);
     var vlim2 = parseInt(lim2.value);
     var vlim3 = parseInt(lim3.value);
     var vlim4 = parseInt(lim4.value);
     var vstep = parseInt(step.value);
     var vtot = parseInt(tot.value);
     
     if (vfield > 0) {
       
       if (vlim1 == vstep) {
         cost.value = vcost-1;
         vcost--;
       }
       else if (vlim2 == vstep) {
         cost.value = vcost-1;
         vcost--;
       }
       else if (vlim3 == vstep) {
         cost.value = vcost-1;
         vcost--;
       }
       else if (vlim4 == vstep) {
         cost.value = vcost-1;
         vcost--;
       }
       
       step.value = vstep-1;
       vstep--;
       
       field.value = vfield-1;
       tot.value = vtot+vcost;
       
     }
   
   }
 </script>

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...