javascript - 关于getElementByClassName遍历问题
PHPz
PHPz 2017-04-11 11:46:13
[JavaScript讨论组]



    
    checkDemo
    
    


    
  • test
  • test
  • test
  • test
  • test

加上getDom[i].className="icon-ok-sign"这行console.log(i)输出的是0-2三个数不加getDom[i].className="icon-ok-sign"这行console.log(i)输出的是0-4五个数,把getElementsByClassName换成getElementsByTagName又一切正常!这是什么情况?

PHPz
PHPz

学习是最好的投资!

全部回复(3)
怪我咯

getElementsByTagName和getElementsByClassName其实一样都是动态的,而由于你是改变了ClassName才会导致你遇到的问题;
简单的说一点就是

getDom一开始是5个,改变了第一个之后,class为icon-ok-circle就只有4个了,然后原本getDom[1]就成为后一步操作中的getDom[0],但此时for循环的i值已经变为1,所以他改变的是之前2位置的,所以会出现隔一个改变的情况
PHP中文网
getDom[i].className="icon-ok-sign"//这句话等于给这个dom的class改成icon-ok-sign
天蓬老师

因为你是依照classname找的元素啊!忘记在哪看到的了,getElementBy找到元素是动态的,元素改变会导致对应的结果改变(这句话出处不好找了,记得是好久之前看到的)。就比如把for循环去掉,只执行一次的话,getDom数组里的元素就只剩下四个了。所以这个for循环只会执行三次。

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

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