javascript - 既然getElementsByTagName是动态获取的,为什么一定要在creatElement元素之后立刻添加点击事件?
黄舟
黄舟 2017-04-10 18:09:43
[JavaScript讨论组]
var aLi=oUl.getElementsByTagName('li');        

oBtn.onclick=function(){
    var oLi=document.createElement('li');
    oLi.innerHTML=oText.value;
    oLi.onclick=function(){
        if(this.className=='')
            this.className='active';
        else
            this.className='';
    };

    oUl.appendChild(oLi);

给动态获取li集合,给oBtn添加点击事件,会创建一个新的li在oUl下,我发现,只要把oLi的点击事件不写在var oLi=document.createElement('li');之后,而是把事件写在外面,点击发生的效果就只能发生在原有html生成的li上,而不能实现在新产生的li上,问题是getElementsByTagName('li')不是动态的么?
是不是说,如果我要给页面上所有原有和li和新生成的li都添加相同事件,不得不写两次点击事件呢?一次在新oLi生成时,一次给其他原有的li

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(2)
ringa_lee

你写在外面,oLi 这个变量就会未定义,报错

阿神

给未来的标签增加事件,这叫事件委托或者事件代理,实现原理很简单,通过在父元素里绑定事件,然后通过冒泡判断事件来自target就可以了,如果不会可以用jquery的on方法,可以实现

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号