0

我目前正在尝试替换还包含表单的页面中的一段纯文本。我知道在替换包含表单的代码后,表单元素会被重新创建。这可能会破坏表单(并且在我正在操作的网页上确实如此)。

通常,我通过使用“getElementsByTagName”函数来解决这个问题,以确保我不需要替换包含表单的代码,并且到目前为止这一直是可能的。然而此时,我已经到达了一个页面,其中最小的标记名是一个 div,其中包含我需要替换的文本一个表单。这个 div 在表格中进一步细分,所以最初我认为“让我们按表格获取元素”,但我需要替换的部分并没有在表格中细分。

所以我用这段代码来替换:

document.documentElement.innerHTML = document.documentElement.innerHTML.replace(RegEx, replaceString);

当然,这会破坏页面上的表单,这是不想要的行为。

有谁知道如何在不破坏表格的情况下解决这个问题?是否有可能以某种方式获得对不包含表格的 div 部分的引用?是否可以仅更改部分代码?现在我获取代码的一个实例,替换实例中的匹配项,然后用更改的实例覆盖原始代码。我曾经记得document.documentElement.innerHTML.replace(RegEx, replaceString);在另一个页面上尝试过,但这仅返回了一个更改代码的实例,它没有更改原始代码。

这是页面的一部分:

<div class="BoxContent" style="background-image:url(http://static.tibia.com/images/global/content/scroll.gif);">
<TABLE></TABLE>
<BR>
Some text here.
<BR>
And some more.
<table></table>
<table></table>
</div>

我需要对表格之间的文本进行一些更改。

我在 SO 上环顾四周,发现了关于使用 innerHTML 向表单添加内容的类似问题,但这对我的事业没有帮助。所以,这里感谢所有帮助!

肯尼斯

4

1 回答 1

1

这里 - 普通的 JS

演示

window.onload=function() {
  var nodes = document.getElementsByClassName("BoxContent")[0].childNodes;
    for (var i=0,n=nodes.length;i<n;i++) {
        if (nodes[i].nodeType==3) {
            // console.log(nodes[i].textContent)
            nodes[i].textContent=nodes[i].textContent.replace(/some/gi,"Lots");
        }
    }
}
于 2013-01-27T13:25:24.503 回答