我收到了这段代码:
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个元素时,这里很难找到。 谢谢!
答案 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)
尝试以下方式:
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;