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

清除缓存没有用。代码如下:<spanid="member_status"style="cursor:pointer;color:#090;"onclick="close_... 清除缓存没有用。
代码如下:

<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>
展开
 我来答
马后雷鼓下扬州5058
2013-05-15 · TA获得超过4321个赞
知道小有建树答主
回答量:693
采纳率:33%
帮助的人:808万
展开全部

你的思路是错误的,当第一次执行 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>


这样就对了

匿名用户
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了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式