2

这是一个带有值的简单下拉列表。我正在尝试将值作为货币提取然后添加。

这些值没有被添加(1+1=21+2=3),而是连接(1+1=111+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 将它们转换为整数。

于 2012-09-21T17:29:02.153 回答
0

substring()函数返回给定字符串的字符串,当然,这是一个字符串,而不是可以对其执行数学运算的对象。如果您将这些字符串解析为一个数字,使用parseInt(),那么它将起作用:

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

此外,您不需要继续重新声明var,您可以改为以逗号分隔的变量声明:

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

我今天发现了一件有趣的事情。我在 theodinproject 上做计算器项目。我有加法、减法、乘法和除法函数。减法、乘法和除法工作正常,无需明确告诉 javascript 将参数视为数字。

于 2014-09-01T01:15:45.090 回答