Javascript if 语句在 for 循环中
Javascript if statement in for loop
请帮助我理解为什么我的代码没有按照我期望的方式做出反应?
所以我正在迭代 for 循环中的值列表,然后如果它们与表单提交的值匹配,它应该返回该值,如果不匹配,它应该返回 -1。如果我在 if 条件中省略了"else"语句,它可以工作(如果没有匹配的值,显然不会返回 -1)。但是对于 else,如果输入了第一个值(在本例中为 10),它只会返回第一个值,否则它将始终返回 -1。(就像如果我输入 20,它将返回 -1,即使它在我的值列表中)
我在这里错过/不理解什么?
// reference the form
var myForm = document.getElementById('findValue');
// our list of random values
var values = [10,20,30,40,50,60,70,80,90,100,234,255,345,366,900,1000,1002,1025,2034];
// on form submit
myForm.onsubmit = function(evt) {
var valueToFind = document.getElementById('myValue').value;
// do not let it refresh the page/send a query
evt.preventDefault();
for(var i = 0; i < values.length; i++) {
if(valueToFind == values[i]) {
alert(values[i]);
}
else {
alert(-1);
return false;
}
}
};
非常感谢!
你不会让它搜索到最后。第一次没有匹配时,它会返回。
找到匹配项后,应立即发出警报,并返回true
以允许提交。如果没有匹配项,则在循环后返回false
。
myForm.onsubmit = function(evt) {
var valueToFind = document.getElementById('myValue').value;
// do not let it refresh the page/send a query
evt.preventDefault();
for(var i = 0; i < values.length; i++) {
if(valueToFind == values[i]) {
alert(values[i]);
return true;
}
}
alert(-1);
return false;
};
编辑:你的问题使用工作return
,当我认为你的意思是别的东西。
在看完第一项后,你总是以一种或另一种方式返回。 如果第一个不数学,你必须继续循环:
for(var i = 0; i < values.length; i++)
{
if(valueToFind == values[i])
{
alert(values[i]);
return values[i];
}
}
// only return false after the loop is complete with no match.
alert(-1);
return false;
return false
将结束循环,即使没有,您也会为每个不是输入的项目发出-1
警报。
对于这种搜索,您应该检查条件是否为真,此时您对其进行操作并return
,并省略else
。然后,您在for
循环之后执行"如果它们都不匹配"代码。
发生这种情况是因为当找到时,您应该中断循环而不是接下来迭代,而当找不到时,循环不应与return false
中断。
但是,在您的情况下,我会在循环后使用标志found
和标志检查:
var found = false;
for (var i = 0; i < values.length; i++) {
if (valueToFind === values[i]) {
found = true;
break;
}
}
alert(found ? valueToFind : -1);
另一种简短的方法是使用Array.indexOf
方法:
alert(values.indexOf(valueToFind) > -1 ? valueToFind : -1);
相关文章:
- 为什么JavaScript在for循环为3时向所有4发出警报
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 我的javascript for循环不起作用
- For循环冻结Javascript
- 如何在for循环中添加事件侦听器
- 双“for”循环(循环)
- javascript for循环不起作用
- for循环中的javascript if语句找不到==
- Javascript在for循环中等待处理请求
- 我没有'I don’我不理解for在循环中的用途
- 为什么在 Javascript 中使用空的 for 循环 - for(;;).
- 错误后如何停止循环“FOR”
- 如何使用循环 for 与 java 脚本一起检查输入中的值
- 如何正确使用ngRepeat,同时使用循环for
- 是否可以使用循环(for/while)来制作动画?
- 在循环for循环时如何进入和退出
- Javascript原型循环for in数组
- 在对象数组中循环for
- Javascript循环:for循环工作,但不能映射
- 如何创建一个循环"for"在json