How to make this treewalker code having a regular for loop or a forEach() method?
+0
−3
Credit for User:Meriton for developing the following code (first published here).
function replaceIn(e) {
if (e.nodeType == Node.TEXT_NODE) {
e.nodeValue = e.nodeValue.replaceAll("a", "");
} else {
for (const child of e.childNodes) {
replaceIn(child);
}
}
}
replaceIn(document.body);
I don't want to use a for...of
loop here by principle, because I personally think its syntax is confusing.
How to make this tree walker having a regular for
loop instead, or, alternatively, a forEach()
method instead?
1 answer
+4
−0
Works for me
The following users marked this post as Works for me:
User | Comment | Date |
---|---|---|
user56529 | (no comment) | May 3, 2022 at 16:33 |
I personally think its syntax is confusing.
Well, it's just a matter of getting used to it, I guess :-)
Anyway, this code is just looping through all childNodes
and in each iteration it calls the replaceIn
function, passing the element as argument.
Therefore, you could replace the for..of
with a traditional for
loop:
function replaceIn(e) {
if (e.nodeType == Node.TEXT_NODE) {
e.nodeValue = e.nodeValue.replaceAll("a", "");
} else {
for (let i = 0; i < e.childNodes.length; i++) {
replaceIn(e.childNodes[i]);
}
}
}
Or you could use the forEach
method:
function replaceIn(e) {
if (e.nodeType == Node.TEXT_NODE) {
e.nodeValue = e.nodeValue.replaceAll("a", "");
} else {
e.childNodes.forEach(replaceIn);
}
}
With both, you achieve the same result.
0 comment threads