2013-08-17 50 views
0

不respoding我有这样的HTML:JavaScript函数首先点击

<script type="text/javascript" src="./scripts/changeImage.js"></script> 
    <img id="myimage" onclick="changeImage()" src="./images/avatars/1.png"/> 

这是函数

var cc=0; 

function changeImage(){ 
    if(cc==-1){ 
     cc=0; 
     document.getElementById('myimage').src="./images/avatars/1.png"; 
     } else if (cc==0){ 
     cc=1; 
     document.getElementById('myimage').src="./images/avatars/2.png"; 
     } else if (cc==1){ 
     cc=2; 
     document.getElementById('myimage').src="./images/avatars/3.png"; 
     } else if (cc==2){ 
     cc=0; 
     document.getElementById('myimage').src="./images/avatars/4.png"; 
     } 
    } 

我必须点击2次改变形象。我尝试了一些技巧,但没有。

+0

*“我尝试了一些技巧,但没有什么.....“*如?你应该尝试的是使用内置在浏览器中的调试器在'if(cc == - 1)'行设置一个断点,然后点击,然后用调试器遍历代码。 –

+0

技巧?这是一个使用'%'的单线程......尽量避免这些技巧。 –

+0

我在我的本地系统中尝试了这段代码。它点击单击可以正常工作。 – Chinmay235

回答

0

我必须点击2次,以改变形象...

在猜测,我会说,cc开始时是-1,所以你通过你的代码遵循这个分支:

cc=0; 
document.getElementById('myimage').src="./images/avatars/1.png"; 

由于设置了图像上已经存在的相同路径,所以没有任何变化。但是cc0,所以第二次点击跟在下一个分支之后。


顺便说一句,这是switch语句为:

function changeImage() { 
    switch (cc) { 
     case -1: 
      document.getElementById('myimage').src = "./images/avatars/1.png"; 
      break; 
     case 0: 
      document.getElementById('myimage').src = "./images/avatars/2.png"; 
      break; 
     case 1: 
      document.getElementById('myimage').src = "./images/avatars/3.png"; 
      break; 
     case 2: 
      document.getElementById('myimage').src = "./images/avatars/4.png"; 
      break; 
    } 
    cc = cc == 2 ? 0 : cc + 1; 
} 

或地图:

var imageMap = { 
    -1: "./images/avatars/1.png", 
    0: "./images/avatars/2.png", 
    1: "./images/avatars/3.png", 
    2: "./images/avatars/4.png" 
}; 
function changeImage() { 

    document.getElementById('myimage').src = imageMap[cc]; 
    cc = cc == 2 ? 0 : cc + 1; 
} 

在上述两种的,我复制你的if/else的逻辑系列,但请注意,您的if/else系列的逻辑永远不会让您回到1.png

另外请注意,我假设真实图像路径更加复杂,因为如果你只是想键关机,你有1.png2.png事实等

+0

只有第一次我从0开始,在这之后我开始每一次时间从-1 – TheAndrew