2013-10-14 48 views
0

嗯,我试图写一个条件在Java脚本时,突然它发生了,我开始得到消息3至4次而不是只是一次我第一次定义这两个变量,然后写了代码我嵌套,如果else语句,然后关闭所有的人,但恰巧有一个无限循环created.I试过如下: -对于无限循环

function setValue(){ 
    myVariable1= document.forms["myform"]["ram"].value; 
    var xuv = ["go", "no", "yes"]; 

    for (i=0;i<xuv.length;i++) 
    { 
     if (myVariable1 === xuv[0]) 
     {  
      alert("yes this game can run") 
     } 
     else 
     {  
      alert("No, This game cannot run") 
     } 
    } 
}; 
+1

你在哪里调用'setValue'?除了少数缺少['var'声明](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var)('myVariable1','i')外,它看起来不错。 – Bergi

+1

这是不可能的,因为它是一个无限循环(除非你重写'alert'来改变全局'i')。获得3到4次的信息是正常的,因为你正在'警告'一个信息或另外3次。 – Ryan

+0

检查你的btn事件处理程序。您可能会多次订阅活动。此外,您的循环将始终以3次警报运行3次,以执行一次setValue调用。放在成功的条件下。 –

回答

2

我觉得你的意思索引数组:

if (myVariable1 === xuv[i]) 

目前你只是检查每个迭代xuv[0]循环的重刑。因此,如果xuv[0]满足您的条件,并且循环重复几次,您将看到您的消息几次。如果没有,你永远不会看到它。

如果它是一个无限循环那么你永远不会停止看到吧...

0
function setValue(){ 
    myVariable1= document.forms["myform"]["ram"].value; 
    var xuv = ["go", "no", "yes"]; 
    var canRun = false; //i asume the programm can't run 

    for (i=0;i<xuv.length;i++) 
    { 
     if (myVariable1 === xuv[i]) //changed from 0 to i here 
     { 
      //but when my input is in the array it can run 
      canRun = true; 
     } 
    } 

    if (canRun) 
    { 
     alert("yes this game can run"); 
    } 
    else 
    {  
     alert("No, This game cannot run"); 
    } 
}; 

您的问题是,你检查3次,如果你输入go。 我想你要做的是检查你的输入是否在数组中。 您还希望打印只是一个警告,我做的if-block循环

+0

谢谢@Philipp Sander非常感谢你解决我的代码非常感谢你,如果这个应用程序给出了很好的结果,我一定会提及你,谢谢你sooo并且谢谢你在这种困难的情况下帮助我的人 – user2826868

0

后,因为你是在一个循环中比较相同的索引等等条件总是很真实,它的警觉,甚至条件不满足它会提醒3次,直到你打破循环或达到停止条件:

function setValue(){ 
    var myVariable1= document.forms["myform"]["ram"].value;//add var otherwise it would expect it as global 
    var xuv = ["go", "no", "yes"]; 

    for (var i=0;i<xuv.length;i++) 
    { 
     if (myVariable1 === xuv[i]) //changed from 0 to i here 
     {  
      alert("yes this game can run"); 
      return; 
     } 
     else 
     {  
      alert("No, This game cannot run"); 
      return; 
     } 
    } 
}; 
+0

这将返回1次迭代后 –

+0

只有一个警报将发生,因为OP想要 –

+0

是的,但是呃希望'它运行'作为输入'是' –