I have a page with most of the content generated from an XML file. The generated content is a table with the first cell in each row being an expanding element:
<details><summary>...</summary>...</details>
I’m trying to change the content of some <summary>
into links as they are being generated. The content of the <summary>
may be text or an <img>
and text. Since appendChild
doesn’t allow me to append a NodeList
, my alternative for this was to cycle through the <summary>
children and add them to the link, then append the link to a replacement <summary>
. Unfortunately, the for
loop never accessed the second child.
for (var j = 0; j < curSummary.childNodes.length; j++) {
// ...
}
I verified that curSummary.childNodes.length
is actually 2
but the loop only ever executed once for each <summary>
. Putting an alert
in to display the value of the loop variable showed it was only ever 0
.
alert('there are' + curSummary.childNodes.length + ' nodes');
for (var j = 0; j < curSummary.childNodes.length; j++) {
alert('appending child node ' + j + ' of ' + curSummary.childNodes.length);
}
Apart from omitting the text, the code worked. The summary showed up with <img>
as a link. Just to be clear, both the image and text are displayed when there isn’t a link.
And no, I’m not changing the value of the loop variable nor issuing a “break” anywhere in the loop.