Javascript替换功能

时间:2013-06-16 20:54:08

标签: javascript replace

好吧,我可能很厚,但是我无法得到一些工作,而且它让我烦恼。我正在使用Javascript中的全局替换属性,但每当我这样做时,我都不会使用DIV。

我所处的DIV不是我需要的目标,但下面是一个简化的例子。

<div id="foo">
<a href="http://www.somesite.com" target="_blank" class="footer">Site 1</a>
</div>

<script type="text/javascript">
window.onload =  function replaceScript() {
   var replacement = '<a href="http://www.somesite.com" target="_blank" class="footer">Site 1</a>';
var text = '<a href="http://www.othersite.com" title="Other Site" target="_blank">Site 2</a>';

document.getElementById("foo").innerHTML = text.replace(new RegExp(replacement, 'g'), '');

}
</script>

我尝试的另一种方式是:

<script type="text/javascript">
window.onload = function replaceScript() {
var toReplace = '<a href="http://www.somesite.com" target="_blank" class="footer">Site 1</a>';
var replaceWith ='<a href="http://www.othersite.com" title="Other Site" target="_blank">Site 2</a>';
document.getElementById("foo") = document.body.innerHTML.replace(toReplace, replaceWith);
}
</script>

但我不能让那个全球工作,

3 个答案:

答案 0 :(得分:1)

我认为你不想用正则表达式做这个,你应该使用DOM方法,比如这个

HTML

<div id="foo">
<a href="http://www.somesite.com" target="_blank" class="footer">Site 1</a>
</div>

的Javascript

var fooA = document.getElementById("foo").children[0];

fooA.href = "http://www.othersite.com";
fooA.title = "Other Site";
fooA.firstChild.nodeValue = "Site 2";

结果

<div id="foo">
<a href="http://www.othersite.com" target="_blank" class="footer" title="Other Site">Site 2</a>
</div>

jsfiddle

答案 1 :(得分:0)

不确定您要做什么,但更改代码是有意义的。

var child= document.querySelector("#foo a");
child.href="http://otherside.com"
child.title="Site2"
child.innerText= "Site2"

适用于IE&gt; = 8以及所有其他浏览器。

答案 2 :(得分:0)

您应该使用DOM元素,而不是使用字符串比较。这也创建了更易读,更易于维护的代码,因为它更具描述性。

var element = document.getElementById("foo"); 
var links = element.getElementsByTagName("a"); // get all links that are children of the div foo 
for (var i = 0; i < links.length; i++) { // Loop over the list
    if (links[i].getAttribute("href") == "http://www.somesite.com" ) { // Identify the link(s) we need to change
        links[i].setAttribute('href', 'http://otherside.com');
        links[i].setAttribute('title', 'Site2');

        links[i].innerHtml = 'Site2';
        // note that links[i].textContent would be better but it is not as cross browser compatible
    }
}

请注意,这不需要任何javascript框架。如果你使用像jQuery这样的框架,你可以简化它。