问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-04-28 13:16

我来回答

2个回答

热心网友 时间:2023-10-09 23:56

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


这样就对了

热心网友 时间:2023-10-09 23:56

运行了没什么问题啊,不就是在这两个之间来回切换?追问问题是切不回去了。只在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了

热心网友 时间:2023-10-09 23:56

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


这样就对了

热心网友 时间:2023-10-09 23:56

运行了没什么问题啊,不就是在这两个之间来回切换?追问问题是切不回去了。只在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了

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
流量保险是什么 会计的基本常识是什么 我奶奶这几天总是拉肚子,而且只能躺着一站起来眼睛就发黑,医生说她贫血... win7c盘里找不到users,用户里也没有c:usersadministrator... C盘里没有users文件夹 pvc天然气管能用多久 PVC天然气管的寿命是多久?  请教大神这怎么搞?天然气排烟管怎么弄? ...时不用在手机确认电脑登陆微信如何不用手机确认 急性胰腺炎护理 急性胰腺炎非手术治疗的护理措施 苹果手机上怎么设置邮箱? 通过按钮调用js中的方法 iphone如何设置邮箱 白天梦见猫把自己的手抓的很紧 中午休息一会梦见猫抓住我,什么意思打也打不走,感觉很可怕 面试时自我介绍该怎么写 面试的自我介绍要怎么写 苹果7手机开机一直显示白苹果,开不了机怎么回事 面试自我介绍怎么说?(范文参考) 中餐部长面试自我介绍和面试问题 请问这台苹果8plus为什么开机的时候是白屏然后显示苹果图标再开机的呢? 帮忙写一份面试时&quot;自我介绍&quot;范文!! iphone 6s变白屏了,就有一个苹果标志了,怎么办? 闯红灯的规定是什么 男女闯红灯是什么意思? 帮忙写份面试时自我介绍范文 苹果手机屏幕上显示白屏只有一个苹果 闯红灯是什么违法行为 餐厅部长初步自我介绍第一次面试部长该怎样自我介绍呢 故意闯红灯属于什么罪 asp.net中,我想实现,当我点击按钮时,触发js代码中的程序 按钮调用JS iphone6邮箱如何设定最多显示多少封邮件 表单onclick事件调用js函数的问题 iphone邮箱怎么设置啊?? 梦见右边下门牙掉了 用jquery如何实现点击不同的按钮执行不同的js文件 JSP页面如何用JS点击按钮执行操作 梦见右边下面大牙掉了一颗,要怎么化解? 一打开页面就让他执行点击某个按钮的的js代码 图片按钮 ONCLICK 调用JS问题 button的onclick事件怎么调用外部引用的js文件的函数 js如何点击按钮执行一段代码 请问ssm框架中,一个button通过点击事件调用js函数通过ajax请求服务器... 手机跳屏是怎么回事? 工程类的中级职称都是有什么 手机频繁跳屏怎么处理 工程类的中级职称都有哪些? 怎么丛安卓手机把短信转到苹果 有什么办法能把安卓手机上的短信恢复到苹果手机上