2017-10-18 61 views
0

当我尝试在javascript控制台中运行cycleimagesfunc()时,我的代码的第一部分工作,但不能在第二部分中工作部分。我试图跟踪每个按键,这样按键将触发该功能运行并显示下一个图像。当我尝试循环并停止函数时,循环代码中的差异:

<p id="demo8">first</p> 

function cycleimagesfunc(){ 
    if(document.getElementById("demo8").innerHTML==="first"){ 
    document.getElementById("demo8").innerHTML ="third"; 
    console.log("0"); 
    return; 
    } 
    if(document.getElementById("demo8").innerHTML==="third"){ 
    document.getElementById("demo8").innerHTML ="fourth"; 
    console.log("1"); 
    return; 
    } 
    if(document.getElementById("demo8").innerHTML==="fourth"){ 
    document.getElementById("demo8").innerHTML ="fifth"; 
    console.log("2"); 
    return; 
    } 


    var cyclecount = 0; 
    function cycleimagesfunc(){ 
    if(cyclecount = 0){ 
    console.log("0"); 
    cyclecount++; 
    return; 
    } 
    if(cyclecount = 1){ 
    console.log("1"); 
    cyclecount++; 
    return; 
    } 
    if(cyclecount = 2){ 
    console.log("2"); 
    cyclecount++; 
    return; 
    } 
    } 
+0

问题在于您在条件中使用单个等号('=')而不是double等号('==')。 –

+0

谢谢黑曜石时代 –

+0

'if(cyclecount = 0)'是赋值。 – PHPglue

回答

2

的问题是在你使用赋值运算符(=),而不是在你的条件语句比较操作符(==)或(===)的。这assignscyclecount它的值而不是checking against它。请注意,使用三重等号还可通过另外检查类型来防止“真值”值。

你也不应该在你的函数中运行return,因为这样可以防止在满足条件后发生任何进一步的功能逻辑。你大概想在cyclecount增加后做点什么!

的条件语句是固定的,而回报是在后续的示例中删除:

var cyclecount = 0; 
 

 
function cycleimagesfunc() { 
 
    if (cyclecount === 0) { 
 
    console.log("0"); 
 
    cyclecount++; 
 
    } 
 
    if (cyclecount === 1) { 
 
    console.log("1"); 
 
    cyclecount++; 
 
    } 
 
    if (cyclecount === 2) { 
 
    console.log("2"); 
 
    cyclecount++; 
 
    } 
 
} 
 

 
cycleimagesfunc();

希望这有助于! :)

+2

我建议'==='避免出现真正的问题。 – PHPglue

+1

我同意了,我已经更新了答案,以推荐triple equals :) –