【发布时间】:2018-08-10 07:26:33
【问题描述】:
我这里有一段代码使用了一个调用 'inArray' 函数并传递用户输入值的 javascript onclick 事件。我正在尝试遍历数组并将输入的 'value' 与数组中的值之一匹配。我不想返回“真/假”,但如果条件 array[i] 等于传递给它的值,那么我想执行“getElement”并放置相应的文字。
function inArray(aValue) {
var value = parseInt(aValue);
var array = [1,2,3,4,5,6,7];
for (i = 0; i < array.length; i++){
if (array[i] === value) {
document.getElementById('primeOutput').innerHTML =
"yes, that's a prime below 200";
}
}
document.getElementById('primeOutput').innerHTML =
"not a prime number below 200";
}
我已将返回类型打印到屏幕上,value 和 array 都是面数,打印时它们等于相同的数字,为什么会这样继续打印最后的输出? (不是低于 200 的素数) 注意:当我将 if 语句中的条件翻转为 '!==' 时,它会将第一条语句打印到 id'ed 为 'primeOutput' 的 html 元素.
另外,正如您可能注意到的那样,我只是想将用户输入与 200 以下的素数列表进行比较。虽然有很多方法可以做到这一点,但我真的想找出为什么这段代码会当我知道值在数组中并且两种数据类型都是数字时,不打印第一条语句?
再次感谢任何详细的解释。
【问题讨论】:
-
因为
"not a prime number below 200"在循环之外——没有条件,总是被执行 -
可能意味着从
return;内部if。
标签: javascript arrays loops for-loop iteration