2011-02-04 7 views
10

私はJavaScriptの変数に1を追加しようとしていますが、次のコードは、予想される結果を与えるものではありません:文字列に格納されている数値を一緒に追加するにはどうすればよいですか?

var val1 = document.getElementById('<%= rng1.ClientID %>'); 
var val2 = val1.value + "1"; 
alert(val2.value); 

はどうすればこれを行うことができますか?

+2

数学的に追加しようとしていますか?つまり3 + 1 = 4.または文字列の最後に "1"を追加しますか?つまり"3" + "1" = "31"。 – anothershrubery

+0

'val2'に文字列または数字のいずれかを割り当てています。したがって、それはオブジェクトではなく、プロパティ 'value'を持たない。なぜ 'val1.value'が存在するのか不思議ならば、' val1'は 'value'というプロパティを持ついくつかのHTMLフォーム要素への参照を保持します。 –

答えて

18

あなたは数にval1.valueに格納されている文字列を変換する関数のparseInt()を使用することができます。また、数にあなたの価値を変換します

var val2 = parseInt(val1.value) + 1; 

Number(val1.value)こと。

-edit-
YCが示唆したように、非常にあなたの文字列が"0"で始まる場合、文字列は八進数として解釈されるためparseInt(val1.value, 10) + 1;を使用することをお勧めします。例えば。 parseInt("0123") == 83ない123

+2

'parseInt()'に10の2番目の引数を追加することを忘れないでください。誤って8進数として評価されることはありません。 – Yahel

+1

さらに、 '+'や 'Number()'だけでなく、8進数のいずれも解析する必要がない場合は、 'parseInt()'を全く使わないでください。例えば'+ val1.value + 1'。 'parseInt()'は、主に文字列の先頭から数値を抽出するためのものです。文字列が有効な数値リテラルであれば、必要ありません。 –

0

あなたが番号を追加し、そう単純でも、好ましい方法は、数値にキャストする+を使用することです

+0

また、他の値のためにparseInt()を使用してください –

5

:-)引用符なしでそれを試みなければなりません。

例:お使いの場合には

+'234'; // 234 
+'042'; // 42! It does not convert to octal 

:あなたはクライアントIDを取得するために<%=ControlID.ClientID %>を使用することはできません外部のJavaScriptファイルで

var val1 = +(document.getElementById('<%= rng1.ClientID %>').value); //() added just for the looks 
var val2 = val1.value + 1; // if val1 is 5, val2 will be 6 hooray! 
alert(val2); // just val2, since it's a plain number not an html input element 
0

外部JavaScriptファイルを使用している場合は、クライアントID値をその関数に渡す必要があります。

1
parseInt($('.scpContainer').height()+200) 
+0

ありがとう!これは私のために働いた。 – irishwill200

関連する問題