【问题标题】:Not adding 2 numbers correctly in javascript [duplicate]没有在javascript中正确添加2个数字[重复]
【发布时间】:2013-02-09 16:47:58
【问题描述】:

我的 html 中有一个下拉列表,此处显示值,

<select id="thedropdown">
<option value="1">test1</option>
<option value="2" selected="selected">test2</option>
<option value="3">test3</option>
</select>

还有我的 javascript:

function myFunction()
{
var a = document.getElementById("thedropdown");
var b = a.options[a.selectedIndex].value;

var y=b;
var x=y+2;
var demoP=document.getElementById("demo")
demoP.innerHTML= x;
}

但是,当我单击按钮时的答案是 22,而应该是 4。你可以看到我的问题。提前为帮助喝彩

【问题讨论】:

  • 可能是因为 b 是一个字符串,然后是 y,然后您将数字 2 转换为一个字符串并将其添加到第一个“2”字符串的末尾
  • 小提琴:jsfiddle.net/L3zbc 使用 parseInt()
  • 签出Javascript unary + operatorx = +y + 2;

标签: javascript html function variables drop-down-menu


【解决方案1】:

现在您的代码连接字符串。在添加之前,您需要 parseInt()parseFloat()(或 Number()+)这些值。

使用parseInt() 时,请确保always specify the second argument (the radix)

b = parseInt(a.options[a.selectedIndex].value, 10);

【讨论】:

  • 所以我是否必须像 var c = parseInt(b) 这样创建一个新的 var?
  • 这样可以,b = parseInt(b) 也可以。
【解决方案2】:

您可以使用一元+ 将数字字符串转换为数字:

var y=+b;

var x=+y+b;

【讨论】:

    【解决方案3】:

    您正在连接一个字符串而不是添加数字:

    var x=y+2;
    

    试试看:

    var x=parseInt(y)+2;
    

    【讨论】:

      【解决方案4】:

      您必须使用 parseInt 函数转换您的值:

          var y = parseInt(b, 10) + 2;
      

      【讨论】:

        【解决方案5】:

        如果其中一个操作数是字符串,+ 运算符执行连接。

        这会起作用

        function myFunction()
        {
          var a = document.getElementById("thedropdown");
          var b = a.options[a.selectedIndex].value;
        
          var y=b;
          var x= parseInt(y) + 2;
          var demoP=document.getElementById("demo")
          demoP.innerHTML= x;
        }
        

        注意var x= parseInt(y) + 2;

        【讨论】:

          猜你喜欢
          • 2016-06-12
          • 1970-01-01
          • 2022-06-13
          • 1970-01-01
          • 2019-10-15
          • 2019-12-20
          • 1970-01-01
          • 2021-10-22
          • 1970-01-01
          相关资源
          最近更新 更多