点击按钮执行一段JS代码,第一次点击正常第二次点击了直接调用了第一次执行JS的结果~何故?

清除缓存没有用。
代码如下:

<span id="member_status" style="cursor:pointer;color:#090;" onclick="close_member()">登录已开启</span>

<script type="text/javascript">
function close_member(){
//alert("close");
document.getElementById("member_status").innerHTML="<span style='color:#CCC;font-size:1.0em;' onclick='restore_member()'>登录已关闭</span>"
}
function restore_member(){
//alert("restore");
document.getElementById("member_status").innerHTML="<span style='color:#090;font-size:1.0em;' onclick='close_member()'>登录已开启</span>"
}
</script>

你的思路是错误的,当第一次执行 close_member 的时候,设置的是 span 的 innerHTML,结果变成
<span...><span...>登录已关闭</span></span>,内层的 span
没有 onclick 事件,导致下一次点击什么都不会发生。


<script type="text/javascript">
function close_member(el){
    el.style.color = "#ccc";
    el.style.fontSize = "1.0em";
    el.innerHTML = "登录已关闭";
    el.onclick = function() {
        restore_member(this);
    };
}
function restore_member(el){
    el.style.color = "#090";
    el.style.fontSize = "1.0em";
    el.innerHTML = "登录已开启";
    el.onclick = function() {
        close_member(this);
    };
}
</script>


<span id="member_status" style="cursor:pointer;color:#090;" onclick="close_member(this)">登录已开启</span>


这样就对了

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-05-15
运行了没什么问题啊,不就是在这两个之间来回切换?追问

问题是切不回去了。只在IE6生效,火狐和其他浏览器都不正常。不知道哪里出问题了。

追答

哦,刚才也被ie骗了,你这样改innerHTML,改的是这个span的内容,不是他自己。
可以这样
var member_closed = false;
function close_member(){
member_closed = !member_closed;
var m = document.getElementById("member_status");
m.style.color = member_closed ? "#CCC" : "#090";
}
如果有别的需要执行就把? : 换成if else,
简单的说就是根据member_closed来判断要执行什么代码,就不用写两个function了

相似回答