HTML DOM如何优化此代码?

时间:2017-03-28 10:40:18

标签: javascript html

我收到了这段代码:

allNodes = document.getElementsByTagName("*");
for (node in allNodes) {
    if (allNodes[node].innerHTML != undefined) {
        allNodes[node].innerHTML = allNodes[node].innerHTML.replace('adshss sd', '1fsss');
        allNodes[node].innerHTML = allNodes[node].innerHTML.replace('adsss sd', '1fsss');
        allNodes[node].innerHTML = allNodes[node].innerHTML.replace('addsss sd', '1fsss');
        allNodes[node].innerHTML = allNodes[node].innerHTML.replace('adfsss sd', '1fsss');
    }
}

我有10个不同的行,我在for循环中替换文本,我注意到需要花费很多时间才能完成,所以我的问题是:我如何优化它?目标是在网站上找到文本(元素没有任何名称,都是<td>),然后替换它。

我知道,如果您知道要包含要替换的特定文本的元素的索引号,那么它会更快,但是当有超过200个元素时,这里很难找到。 谢谢!

3 个答案:

答案 0 :(得分:1)

假设您的标记也没有此输入值("adsss sd")作为属性值,请尝试使用

由于您要替换简单文本而不是标记,

document.body.innerHTML = document.body.innerHTML.replace( /adsss sd/g, '1fsss');

答案 1 :(得分:0)

  var allNodes = document.getElementsByTagName("*");
  [].forEach.call(allNodes, function(node) {
    node.innerHTML = node.innerHTML.replace('adsss sd', '1fsss');
  });

答案 2 :(得分:0)

尝试以下方式:

&#13;
&#13;
let allNodes = document.getElementsByTagName("DIV");

[].slice.call(allNodes).forEach(function (div) {
    div.innerHTML = div.innerHTML.replace('adsss', 'tt');
});
&#13;
<div>wrwerwer dgwe adsss sd</div>
<div>wrwerwer dgwe adsss sd</div>
<div>wrwerwer dgwe adsss sd</div>
<div>wrwerwer dgwe adsss sd</div>
<div>wrwerwer dgwe adsss sd</div>
<div>wrwerwer dgwe adsss sd</div>
&#13;
&#13;
&#13;