提醒用户每个数组值是否为数字
Alert user whether each array value is number or not
我的目标是创建一个数组,当单击一个按钮时,它会遍历数组的每个单独项目并提醒它是否为数字。
<body>
<form id = "form">
<p id = "instruction">Enter all values in the textbox, separated by a space.</p>
<textarea id = "textarea" rows = "8" columns = "60"></textarea>
<input id = "submit" type = "submit" value = "Sort Alphabetically" onclick = "stringSplitAlpha();">
<p id = "p"></p>
</form>
<script>
function stringSplitAlpha() {
var str = document.getElementById("textarea").value;
var arr1 = str.split(" ");
for (var i = 0; i < arr1.length; i++) {
window.alert(isNaN(arr1[i]));
if (isNaN(arr1[i]) == 'true') {
window.alert(arr1[i] + "is not a number.");
} else {
window.alert("arr1[i] + "is a number.");
}
}
}
</script>
</body>
当我 运行 代码时,一开始一切正常。我在数组的文本框中输入了一些值,当我单击按钮时,window.alert(isNaN(arr1[i]));
在字母上显示“true”,在数字上显示“false”。这是预期的。
但是,当它对某个字母说“真”时,下一个警报会显示“...是一个数字”。本文来自
if (isNaN(arr1[i]) == 'true') {
window.alert(arr1[i] + "is not a number.");
} else {
window.alert("arr1[i] + "is a number.");
}
,却完全出乎意料。 window.alert(isNaN(arr1[i]));
结果是“真”,所以它不应该说“...不是数字”吗?我在这里被难住了。我以为可能有某种语法错误,但似乎没有。双等号和三等号我都试过了,都没有用。
澄清一下,如果我在文本框中输入 "1 34 hello"
,这就是警报中显示的内容,顺序为:
"false," "1 is a number," "false," "34 is a number," "true," "hello is a number"
。只有最后一个提示“你好是一个数字”是不正确的。
提前致谢。
isNaN 函数returns 一个布尔值,不是字符串。不要将它与 'true' 进行比较,而是尝试不进行比较。另一种选择是从 true 周围删除引号,您的原始示例应该可以工作。我在下面进一步压缩了它,因为您在代码中看到的最佳实践方式是省略布尔值的比较。
if (isNaN(arr1[i])) {
window.alert(arr1[i] + " is not a number.");
} else {
window.alert(arr1[i] + " is a number.");
}
更多文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN
我的目标是创建一个数组,当单击一个按钮时,它会遍历数组的每个单独项目并提醒它是否为数字。
<body>
<form id = "form">
<p id = "instruction">Enter all values in the textbox, separated by a space.</p>
<textarea id = "textarea" rows = "8" columns = "60"></textarea>
<input id = "submit" type = "submit" value = "Sort Alphabetically" onclick = "stringSplitAlpha();">
<p id = "p"></p>
</form>
<script>
function stringSplitAlpha() {
var str = document.getElementById("textarea").value;
var arr1 = str.split(" ");
for (var i = 0; i < arr1.length; i++) {
window.alert(isNaN(arr1[i]));
if (isNaN(arr1[i]) == 'true') {
window.alert(arr1[i] + "is not a number.");
} else {
window.alert("arr1[i] + "is a number.");
}
}
}
</script>
</body>
当我 运行 代码时,一开始一切正常。我在数组的文本框中输入了一些值,当我单击按钮时,window.alert(isNaN(arr1[i]));
在字母上显示“true”,在数字上显示“false”。这是预期的。
但是,当它对某个字母说“真”时,下一个警报会显示“...是一个数字”。本文来自
if (isNaN(arr1[i]) == 'true') {
window.alert(arr1[i] + "is not a number.");
} else {
window.alert("arr1[i] + "is a number.");
}
,却完全出乎意料。 window.alert(isNaN(arr1[i]));
结果是“真”,所以它不应该说“...不是数字”吗?我在这里被难住了。我以为可能有某种语法错误,但似乎没有。双等号和三等号我都试过了,都没有用。
澄清一下,如果我在文本框中输入 "1 34 hello"
,这就是警报中显示的内容,顺序为:
"false," "1 is a number," "false," "34 is a number," "true," "hello is a number"
。只有最后一个提示“你好是一个数字”是不正确的。
提前致谢。
isNaN 函数returns 一个布尔值,不是字符串。不要将它与 'true' 进行比较,而是尝试不进行比较。另一种选择是从 true 周围删除引号,您的原始示例应该可以工作。我在下面进一步压缩了它,因为您在代码中看到的最佳实践方式是省略布尔值的比较。
if (isNaN(arr1[i])) {
window.alert(arr1[i] + " is not a number.");
} else {
window.alert(arr1[i] + " is a number.");
}
更多文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN