Javascript:document innerHTML替换中断表单

时间:2013-01-27 08:34:39

标签: javascript forms replace innerhtml

我目前正在尝试替换包含表单的页面中的一段纯文本。我知道在替换包含表单的代码时,表单元素会被重新创建。这可能会破坏形式(它在我正在操作的网页上发生)。

通常,我通过使用“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向表单添加内容,但这对我的原因没有帮助。所以,这里有所有帮助!

1 个答案:

答案 0 :(得分:1)

这里 - 普通的JS

DEMO

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");
        }
    }
}