Javascript 组合if语句

Javascript 组合if语句,javascript,jquery,html,Javascript,Jquery,Html,我正在制作一个简单的HTML5和Javascript拖放游戏,用户可以通过该游戏将div中的图像拖动到一个空div中 拖放操作正常,我已经成功地编写了javascript代码,以便在#answer1被拖动到正确的div#target 但是,当我复制if语句时,它会发出正确的警报,但也会发出不正确的警报,我怀疑这是紧跟其后运行的第二条if语句 有没有办法对语句进行排序,使其仅在拖动图像时运行,而不是运行所有if语句 function allowDrop(ev){ ev.preventDefa

我正在制作一个简单的HTML5和Javascript拖放游戏,用户可以通过该游戏将div中的图像拖动到一个空div中

拖放操作正常,我已经成功地编写了javascript代码,以便在
#answer1
被拖动到正确的div
#target

但是,当我复制if语句时,它会发出正确的警报,但也会发出不正确的警报,我怀疑这是紧跟其后运行的第二条if语句

有没有办法对语句进行排序,使其仅在拖动图像时运行,而不是运行所有if语句

function allowDrop(ev){
   ev.preventDefault();
}

function drag(ev){
   ev.dataTransfer.setData("content", ev.target.id);
}

function drop(ev){
   ev.preventDefault();
   var image = ev.dataTransfer.getData("content");
   ev.target.appendChild(document.getElementById(image));

  if($('#target1').find('#answer1').length == 1)
  {
    alert("CORRECT!");
  } else {
    alert("Wrong!");
  }

  if($('#target2').find('#answer2').length == 1)
  {
    alert("CORRECT!");
  } else {
    alert("Wrong!");
  }
}
完整网页的JSFIDLE:


正如吉尔德在评论中所说,这将是更好的做法:

function drop(ev){
   ev.preventDefault();
   var image = ev.dataTransfer.getData("content");
   ev.target.appendChild(document.getElementById(image));

   alert(checkDrop());
}

function checkDrop() {

     if($('#target1').find('#answer1').length == 1){
        return "CORRECT!";
     } 
     else if($('#target2').find('#answer2').length == 1) {
        return "CORRECT!";
     }
     else {
       return "Wrong!";
     }
}

正如Ghilled在评论中所说,这将是更好的做法:

function drop(ev){
   ev.preventDefault();
   var image = ev.dataTransfer.getData("content");
   ev.target.appendChild(document.getElementById(image));

   alert(checkDrop());
}

function checkDrop() {

     if($('#target1').find('#answer1').length == 1){
        return "CORRECT!";
     } 
     else if($('#target2').find('#answer2').length == 1) {
        return "CORRECT!";
     }
     else {
       return "Wrong!";
     }
}

一个选项是只检查有图像的目标。这使得在游戏中添加或删除目标更加容易,而无需在
drop()
中更改代码


一个选项是只检查有图像的目标。这使得在游戏中添加或删除目标更加容易,而无需在
drop()
中更改代码


您可以使用
return
而不是alert,或者alert drop()将返回什么
return
将使解析器在执行该函数时离开该函数。您可以使用
return
而不是alert,或者alert drop()将返回什么<代码>返回将使解析器在执行函数时离开函数。这太完美了!非常感谢。在将答案放回指定的起始区域(例如,如果用户搞错了)时,会出现两个错误,提示“错误”,有什么方法可以避免这种情况发生吗?或者如果声明不正确,可以将图像位置重置为原始位置?此外,如果“阻止此页面创建其他对话”的警告框中的答案错误,我会收到一条消息。这正常吗?要阻止它发出“错误”警告,只需从代码中删除该警告。这也将是您放置代码重置图像的地方。是的,这个信息是完全正常的。这太完美了!非常感谢。在将答案放回指定的起始区域(例如,如果用户搞错了)时,会出现两个错误,提示“错误”,有什么方法可以避免这种情况发生吗?或者如果声明不正确,可以将图像位置重置为原始位置?此外,如果“阻止此页面创建其他对话”的警告框中的答案错误,我会收到一条消息。这正常吗?要阻止它发出“错误”警告,只需从代码中删除该警告。这也将是您放置代码重置图像的地方。是的,这个信息是完全正常的。