Ajax 板


LINE

※ 引述《flowwinds (..)》之铭言: : 大家好, : 写了个function : --------------------------------------------------------- : function removeClass(dom_root, className){ : var doms = dom_root.getElementsByClassName(className); : if(doms.length > 0){ : var i; : console.log("doms length:"+doms.length); : for (i = 0; i < doms.length > 0;i=i+1) { : console.log("before length:"+doms.length); : if(doms[i] != null){ : doms[i].classList.remove(className); : } : console.log("after length:"+doms.length); : } : } : } : --------------------------------------------------------- : 印出的结果是 : -------------------- : doms length:3 : before length:3 : after length:2 : before length:2 : after length:1 : -------------------- : 而array就有一个element就没处理到 : 有人知道这是甚麽原因吗? : 看起来就是class remove掉後, getElementsByClassName()的结果也会即时更新? : 谢谢~ 其实原因你自己也说了,你修改doms的内容,doms就改变了,连带着doms.length也会跟 着变(这个你自己也可以从console.log的结果中看出来)。所以可以先用一个变数把原 初的length存起来给回圈使用。 另一个问题是你的doms阵列越来越小,你却用越来越大的index来处理这个阵列。 比方说第一次回圈时你的doms可能是[dom, dom, dom],然後你处理第0个dom (i=0)。 第二次回圈时你的doms是[dom, dom],然後你处理第1个dom (i=1)。 第三次回圈时你的doms是[dom],然後你处理第2个dom (i=2)。 看出问题来了吗? 其实你可以一直处理第0个dom就可以了。 修改後如下: function removeClass(dom_root, className){ var doms = dom_root.getElementsByClassName(className); var domLength = doms.length; //存初始的长度 if(doms.length > 0){ var i; console.log("doms length:"+doms.length); for (i = 0; i < domLength > 0;i=i+1) { console.log("before length:"+doms.length); if(doms[0] != null){ // 改成删除第0个元素的class doms[0].classList.remove(className); } console.log("after length:"+doms.length); } } } 希望有帮助到你 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 50.68.15.70
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Ajax/M.1556659415.A.260.html ※ 编辑: bakedgrass (50.68.15.70), 05/01/2019 05:30:32 ※ 编辑: bakedgrass (50.68.15.70), 05/01/2019 05:32:05
1F:推 flowwinds: 谢回覆 会修改 是想问remove後为何doms也即时更新了? 05/01 15:45
2F:→ flowwinds: 查了一下 api docs就是这样写了 感谢回覆了 05/01 15:59
3F:推 s25g5d4: 改用 querySelectorAll 就不会有这个行为了 05/01 22:56
4F:推 wotupset: 推楼上 不想动态更新就用querySelectorAll 05/11 20:52
5F:推 ducati1224: Zzㄏˇ 05/14 13:05







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP