为什么JS 只能执行一次

wlf2r 2016-07-25 10:16:45
<div id="container">
<ul id="page_ul">
<li>首页</li>
<li>首页</li>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>首页</li>
<li>首页</li>
</ul>
</div>

单击li 可以改变数字部分 现在问题是 只能点一次 为什么不能多次执行?

<script type="text/javascript">

window.onload=function aa(){
var page_ul = document.getElementById("page_ul");
var li_num = page_ul.getElementsByTagName("li");
//page_ul.removeChild(page_ul.childNodes[7]);

for(var i=0;i<li_num.length;i++){

li_num[i].onclick =function(){
var num = this.innerHTML;

for(var m=1 ;m < 5; m++ ){
//parseInt(num)
li_num[m+1].remove();//删除节点

var nodeli = document.createElement('li');//创建一个li节点
var li_text = document.createTextNode((parseInt(num)+m));//创建一个文本节点
nodeli.appendChild(li_text);//将文本节点追加到li节点上

var nodeli1 = page_ul.getElementsByTagName('li')[2];//获取ul下第3个节点——秋天
page_ul.insertBefore(nodeli,nodeli1);//函数insertBefore()表示在哪个节点前添加。第一个参数为要插入的新节点,第二个参数
}
}
}
}

</script>
...全文
317 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
vioalouyang 2016-07-27
  • 打赏
  • 举报
回复
给每个元素都绑定事件,你只绑定了一次。
「已注销」 2016-07-26
  • 打赏
  • 举报
回复
百度一下“动态绑定事件”你就明白
chanel_1 2016-07-26
  • 打赏
  • 举报
回复
<script type="text/javascript"> window.onload=function aa(){ var page_ul = document.getElementById("page_ul"); (function clickLi(){ var li_num = page_ul.getElementsByTagName("li"); for(var i=0;i<li_num.length;i++){ li_num[i].onclick =function(){ var num = this.innerHTML; for(var m=1 ;m < 5; m++ ){ //parseInt(num) li_num[m+1].remove();//删除节点 var nodeli = document.createElement('li');//创建一个li节点 var li_text = document.createTextNode((parseInt(num)+m));//创建一个文本节点 nodeli.appendChild(li_text);//将文本节点追加到li节点上 var nodeli1 = page_ul.getElementsByTagName('li')[2];//获取ul下第3个节点——秋天 page_ul.insertBefore(nodeli,nodeli1);//函数insertBefore()表示在哪个节点前添加。第一个参数为要插入的新节点,第二个参数 } clickLi(); } } })(); } </script>
jio可 2016-07-26
  • 打赏
  • 举报
回复
<script>
    window.onload = function aa(){
        $("#page_ul").on("click","li",function(){
            var num = $(this).index();
            for(var i = 1 ;i < 5; i++ ){
                console.log("delete:::"+$("#page_ul li:nth-child("+(i+1)+")").html());
                $("#page_ul li:nth-child("+(i+1)+")").remove();//删除节点
                $("<li>"+(num+i)+"</li>").insertBefore($("#page_ul li:nth-child(3)"));
                console.log("add::"+$("<li>"+(num+i)+"</li>").html())
            }
        });
    }
</script>
引入 jquery 试下
Go 旅城通票 2016-07-25
  • 打赏
  • 举报
回复
你事件绑定到旧节点上,都被remove了,新创建的节点又没有绑定onclick事件那不是一次你想多少次 事件独立为一个函数,给新节点加上
wlf2r 2016-07-25
  • 打赏
  • 举报
回复
给个代码.... 可以不

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧