2

これは、値を持つ単純なドロップダウンです。値を通貨としてプルしてから追加しようとしています。

値は追加 (1+1=2または1+2=3) されていませんが、代わりに連結 (1+1=11または1+2=12) されています。ここでどこが間違っていますか?:

<script>
    function displayResult()
    {
        var strm=document.getElementById("matt").options[document.getElementById("matt").selectedIndex];
        var t=strm.text.search("\\\$");
        var strb=document.getElementById("box").options[document.getElementById("box").selectedIndex];
        var b=strb.text.search("\\\$");
        var x=strm.text.substr(t+1);
        var y=strb.text.substr(b+1);
        var math= x + y;

        alert(strm.text.substr(t+1));
        alert(strb.text.substr(b+1));
        alert(math);
    }
</script>

<form>
    Select #1:
    <select id="matt">
        <option>$1.00</option>
        <option>$2.00</option>
    </select>

    <br />
    Select #2:
    <select id="box">
        <option>$3.00</option>
        <option>$4.00</option>
    </select>

</form>

<button type="button" onclick="displayResult()">Display index</button>
4

6 に答える 6

8

parseInt()文字列を整数としてキャストするために使用します。

var math= parseInt(x,10) + parseInt(y,10);

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/parseIntを参照してください

于 2012-09-21T17:28:46.470 に答える
3

値が数値として追加されるようにするには、Number最初にキャストします。

Number('2') + Number('2') = 4
'2' + '2' = '22'
于 2012-09-21T17:29:48.677 に答える
1

parseFloat() または parseInt() を使用してみてください。そうしないと、数値として認識されません。通常の文字列として追加されます。

var math= parseFloat(x) + parseFloat(y);

alert(math)

フィドルをチェック

于 2012-09-21T17:29:33.680 に答える
0

値は文字列として解釈されます。値を追加する前に、parseInt で値を int に変換する必要があります。

于 2012-09-21T17:29:02.153 に答える
0

The substring() function returns the substring of a given string, which is, of course, a string and not an object upon which math can be performed. If you parse those strings into a number, using parseInt(), then it will work:

var x= parseInt(strm.text.substr(t+1),10);
var y= parseInt(strb.text.substr(b+1),10);

Also, you don't need to keep redeclaring var, you could instead comma-separated variable declarations:

var x = parseInt(strm.text.substr(t+1),10),
    y = parseInt(strb.text.substr(b+1),10);
于 2012-09-21T17:29:13.560 に答える