2013-03-07 96 views
1

我想每次点击链接时都会更改javascript innerHTML。如何获得一个链接在javascript中多次更改innerHTML

function id_1(a){ 
    var id = document.getElementById(a); 
    if (id.innerHTML==="innerHTML2"){ 
     id.innerHTML="innerHTML1"; 
    } 
    if (id.innerHTML==="innerHTML1"){ 
     id.innerHTML="innerHTML2"; 
    } 
} 

 

<a id="id" href="javascript:id_1('id')">innerHTML1</a> 

我希望它为你点击链接改变从innerHTML1innerHTML2innerHTML1innerHTML2等。

现在它只能切换一次从innerHTML1innerHTML2

回答

4

您需要使用else if第二if语句。

在你的代码的逻辑就像在第二次点击以下(当内容是innerHTML2):

  1. 第一if语句测试内容是否innerHTML2,它是如此的含量变为innerHTML1(你想要的)。
  2. 第二个if语句测试内容是否是innerHTML1,它是(因为它只是在步骤1中更改),因此内容会更改回innerHTML1(不是您想要的内容)。

因此,解决方案应该如下所示:

function id_1(a){ 
    var id = document.getElementById(a); 
    if (id.innerHTML=="innerHTML2"){ 
     id.innerHTML="innerHTML1"; 
    }else if (id.innerHTML=="innerHTML1"){ 
     id.innerHTML="innerHTML2"; 
    } 
} 

为了强调这一点,你可以保持代码的方式相同,但使用的回报,以确保只有一个,如果使用的语句。

function id_1(a){ 
    var id = document.getElementById(a); 
    if (id.innerHTML=="innerHTML2"){ 
     id.innerHTML="innerHTML1"; 
     return; 
    } 

    if (id.innerHTML=="innerHTML1"){ 
     id.innerHTML="innerHTML2"; 
     return; 
    } 
} 
3

你只需要使用您的if语句之间的else

function id_1(a){ 
    var id = document.getElementById(a); 
    if (id.innerHTML==="innerHTML2"){ 
     id.innerHTML="innerHTML1"; 
    } else if (id.innerHTML==="innerHTML1"){ 
     id.innerHTML="innerHTML2"; 
    } 
} 

没有else你的第二个if由第一if做出变化的影响。

由于innerHTML的只有两种状态,你实际上可以简化为:

function id_1(a){ 
    var id = document.getElementById(a); 
    if (id.innerHTML==="innerHTML2"){ 
     id.innerHTML="innerHTML1"; 
    } else { 
     id.innerHTML="innerHTML2"; 
    } 
} 
1

你只是缺少一个else:

<html> 
<head> 
<script> 
function id_1(a){ 
    var id = document.getElementById(a); 
    if (id.innerHTML==="innerHTML2"){ 
     id.innerHTML="innerHTML1"; 
    } 
    else if (id.innerHTML==="innerHTML1"){ 
     id.innerHTML="innerHTML2"; 
    } 

} 
</script> 
</head> 
<body> 
<a id="id" href="javascript:id_1('id')">innerHTML1</a> 
</body> 
</html> 

小提琴:http://jsfiddle.net/WCgAS/

1

它实际上是具有结构转换所有的时间,但正如你写它,它切换到“innerHTML1”,然后再回到“innerHTML2”

所以只需将第二个“if”更改为“else if”

<html> 
<head> 
<script> 
function id_1(a){ 
    var id = document.getElementById(a); 
    if (id.innerHTML==="innerHTML2"){ 
    id.innerHTML="innerHTML1"; 
    } 
    else if (id.innerHTML==="innerHTML1"){ 
    id.innerHTML="innerHTML2"; 
    } 
} 
</script> 
</head> 
<body> 
<a id="id" href="javascript:id_1('id')">innerHTML1</a> 
</body> 
</html>