2016-05-27 4 views
2

Javascriptが今何が起こっているか、複数の

var x1 = document.getElementById("x1");  
 
var x2 = document.getElementById("x2"); 
 

 
function ThisEvent(){// needs a lot of work done to it 
 
    if (x1.value==1) { 
 
    x2.value--; 
 
    } else if (x1.value==2) { 
 
    x2.value++; 
 
    } else if (x1.value==3) { 
 
    x2.value+=5; 
 
    } 
 
}
<input type="text" value="0" id="x1" onblur="ThisEvent()"> x1  </br> 
 
<input type="text" value="0" id="x2"> x2

ずつ増加は、数字ではなく、X1場合は3が入力されるとインクリメントを追加さ​​れています。どのようにして1桁以上に増分させるのですか?

+0

ない結果が期待したもの、ありますか? – guest271314

+5

ヒント:数値ではなく文字列です。 – zerkms

+0

予想される結果は、x1がx1に1を入力するとx2が1減少し、x1がx1に3を入力すると、x2は5を新しい数字として追加せずに増加する –

答えて

5
if (x1.value == 3) { 
    x2.value = parseInt(x2.value) + 5; 
} 

これを文字列として解釈しています。計算ではparseIntx2.valueとすることができます。

+0

私はparseIntを使用していますが、失敗します。 –

+0

https://jsfiddle.net/77bsLa5f/ –

+0

それは驚異的なものではありません。大変ありがとう@Bitwise Creative –

0

入力の値が文字列である、あなたはそれに加えをperfomするためにに変換する必要があります。

あなたはこのようにそれを行うことができます:

function ThisEvent() { // needs a lot of work done to it 
    var valX1 = Number(x1.value); 
    var valX2 = Number(x2.value); 
    if (valX1 == 1) { 
     valX2--; 
    } else { 
     if (valX1 == 2) { 
      valX2++; 
     } else { 
      if (valX1 == 3) { 
       valX2 += 5; 
      } 
     } 
    } 
    x2.value = valX2; 
} 

jsFiddle:https://jsfiddle.net/v1utqv7f/

関連する問題