Javascript for循环仅应用于最后一项

Javascript for循环仅应用于最后一项,javascript,arrays,function,for-loop,Javascript,Arrays,Function,For Loop,我正在做一个简单的拖放活动,检查所有的拖放项目是否在正确的拖放区域。事情会变得混乱,但本质上我所看到的是每个放置区域检查是否包含drag+匹配的数组,即第一个数组项drag0位于第一个数组项[0]放置区域内 然而,它只对最后一个项目起作用,你只需要把最后一个项目做好,你就会得到正确的回答。我见过将其包装在函数中或使用throw/catch的选项,但似乎没有任何效果 项目类是可拖放的项目,dropzone是可拖放区域的类 函数seesult{ var result=document.getEle

我正在做一个简单的拖放活动,检查所有的拖放项目是否在正确的拖放区域。事情会变得混乱,但本质上我所看到的是每个放置区域检查是否包含drag+匹配的数组,即第一个数组项drag0位于第一个数组项[0]放置区域内

然而,它只对最后一个项目起作用,你只需要把最后一个项目做好,你就会得到正确的回答。我见过将其包装在函数中或使用throw/catch的选项,但似乎没有任何效果

项目类是可拖放的项目,dropzone是可拖放区域的类

函数seesult{ var result=document.getElementByIdresult; var drags=document.getElementsByClassNameitem; var drops=document.getElementsByClassNamedropzone; var i; 对于i=0;i<0.length;i++{ var num=i; 如果删除[i].innerHTML.indexOfdrag+num{ result.style.color=绿色; }否则{ result.style.color=红色; } } }; 拖动项目1 拖动项目2 拖动项目3 拖动项目4 删除说明1

删除说明2

删除说明3

删除说明4

看结果!
结果这样做的方法是假设一切都好,然后如果你发现不好的东西,就改变它。看看我是如何将代码更改为最初将result.style.color设置为绿色的,然后如果发现元素不正确,它会将其设置为红色并返回

function seeResult() {
    var result = document.getElementById("result");
    result.style.color = "green";
    var drags = document.getElementsByClassName("item");
    var drops = document.getElementsByClassName("dropzone");
    var i;
    for (i = 0; i < drops.length; i++){
        var num = i;
            if(drops[i].innerHTML.indexOf("drag"+num) == -1){
              result.style.color = "red";
              return;                
            }
    }
}

可能重复的啊,我喜欢正确的想法,然后寻找错误;然而,我认为for循环或if语句仍然存在问题,如果任何拖动项落在任何放置区域,我会得到正确的结果。@TylerB是的,if语句中存在问题。我对代码进行了重构,以快速恢复。不管怎样,我现在已经纠正了这个问题,它应该会起作用啊,是的,我明白了,这个==-1。有道理。回报到底在做什么?对不起,我是新来的,还在学习。非常感谢您抽出时间来帮忙,我真的很感激!回路使for回路短路。在if语句中输入了一个failed=之后,没有必要继续检查所有的drop,因为它没有拖拽。只需一次失败,结果就会变成红色。哦,太棒了!再次感谢你的帮助!