我是编码初学者。刚开始学JS。这也是我在这个论坛上的第一篇文章。 问题:请看代码。 “999”是用引号输入的。首先是 Number("999"),在屏幕上显示 999。但是如果我在输入框中输入“999”(包括引号),然后使用 Number() 转换输入框中的值,它会显示 NaN???即使当我显示输入值时,它是“999”。
请指导。
附:我尝试上传截图,但似乎没有显示!但网址在我帖子的开头。
<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>
最佳答案
当您在输入框中输入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));
关于javascript - Number ("999") 给出 999 但 Number(input.value) 给出 NaN,即使显示 input.value 给出 "999"正是我在 Number ("999"中输入的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36927044/