js获取dom集合进行替换为什么偶尔会有漏掉的没替换成功的部分?
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
代码如下: var slclist = document.getElementsByClassName("codearea"); for(var i=0; i<slclist.length; i++){ // 替换 slclist[i] 的 outerHTML slclist[i].outerHTML = newhtml; } ![]() 主要原因是 DOM 集合是“live”的,在遍历过程中直接修改 核心原因分析
这就是“偶尔漏掉”的直接原因(取决于集合长度的奇偶性、页面渲染时机等,表现为“偶尔”)。 解决方案将 live 集合转换为静态集合,例如使用 推荐写法(静态 NodeList)javascript var slclist = document.querySelectorAll(".codearea"); for(var i = 0; i < slclist.length; i++) { slclist[i].outerHTML=".."; // ... 处理逻辑 } 或转为普通数组(兼容旧环境)javascript var slclist = document.getElementsByClassName("codearea"); var arr = Array.prototype.slice.call(slclist); // 转为静态数组 for(var i = 0; i < arr.length; i++) { var codep = arr[i]; // ... } 该文章在 2026/6/3 9:30:01 编辑过 |
关键字查询
相关文章
正在查询... |