好吧,我可能很厚,但是我无法得到一些工作,而且它让我烦恼。我正在使用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>
但我不能让那个全球工作,
答案 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>
上
答案 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这样的框架,你可以简化它。