数字(" 999")给出999,但是数字(input.value)给出NaN,即使显示input.value给出" 999"正是我输入的数字(" 999")

时间:2016-04-28 23:18:22

标签: javascript numbers

Screenshot of my attempt

我是编码的初学者。刚开始JS。这是我在这个论坛上的第一篇文章。 问题:请参阅代码。 " 999"使用引号输入。首先是数字(" 999"),它在屏幕上显示999。但如果我进入" 999" (在引号中包含)在输入框中,然后使用Number()从输入框转换值,它显示NaN ???即使我从输入中显示值,它也是" 999"。

请指导。

P.S。我试图上传截图,似乎没有出现!但是网址已经开始了。

<html>
   <body>
       <p id="demo1"></p>
       <br>
       <br>
       <br>
       <input id="number" />
       <br>
       <button onclick="fn()"> Type "999" with quotes</button>
       <p id="demo2"></p>
       <p id="demo3"></p>
       <script>
           document.getElementById("demo1").innerHTML = Number("999");
           function fn()
           {
               var age = Number(document.getElementById("number").value);
               document.getElementById("demo2").innerHTML = age;
               document.getElementById("demo3").innerHTML = document.getElementById("number").value;

           }
       </script>
   </body>
</html>

1 个答案:

答案 0 :(得分:7)

在输入框中键入999时,输入框的值为"999"。引用value属性将在代码中与文字"999"处理相同。

在输入框中输入"999"时,输入框的值为"\"999\""

以这种方式思考:如果在输入框中键入foo bar,则值必须是字符串"foo bar"。该值不能为foo bar。这不是有效的javascript语法。

如果您想允许引号但不需要它们,您可以使用文本替换删除所有引号:

var age = Number(document.getElementById("number").value.replace(/"/g, ''));

如果引号有意义并且值被解释为javascript字符串很重要,那么可以使用JSON.parse:

var age = Number(JSON.parse(document.getElementById("number").value));