我想用javascript替换目录链接。例如,我想将http://mysite.com/cdn/backup/Pic.jpg更改为http://mysite.com/newcdn/folder/Pic.jpg。
我的代码:
<!DOCTYPE html>
<html>
<body>
<img src="http://mysite.com/cdn/backup/Pic.jpg" />
<iframe src="http://mysite.com/cdn/backup/Vid.flv"></iframe>
<script>
var str="cdn/backup/";
var n=str.replace("cdn/backup/","newcdn/folder/");
</script>
</body>
</html>
使用本教程:http://www.w3schools.com/jsref/jsref_replace.asp
所以,这个代码对我不起作用。如果脚本中有任何错误,请更正。提前谢谢。
答案 0 :(得分:2)
如果您正在尝试更改<img>
标记的src(这是我想要的,请阅读问题),那么您需要执行以下操作:
function changeSrc() {
var img = document.getElementsByTagName('img')[0];
img.src = img.src.replace('cdn/backup/', 'newcdn/folder/');
}
window.onload = changeSrc;
从我读过的评论中你想要更改所有src
,所以代码看起来像这样:
function changeAllSrcs() {
var imgs = document.getElementsByTagName('img');
for (var i = 0; i < imgs.length; i++) {
var img = imgs[i];
img.src = img.src.replace('cdn/backup/', 'newcdn/folder/');
}
}
window.onload = changeAllSrcs;
我不知道这是否是一个很好的方法,但如果你想用链接替换所有出现的事情那么你应该做这样的事情(我不喜欢这个解决方案,它不是完全的安全,无论如何它应该做的工作):
function replaceLinks() {
var bodyHtml = document.body.innerHTML,
replaced = bodyHtml.replace(/cdn\/backup/g, 'newcdn/folder/');
document.body.innerHTML = replaced;
}
window.onload = replaceLinks;
答案 1 :(得分:1)
访问元素并替换src属性。
更改所有img元素的src:
var img = document.getElementsByTagName('img');
length = img.length;
while(length--) {
img[length].src = img[length].src.replace('cdn/backup/', 'newcdn/folder/');
}
答案 2 :(得分:1)
假设你可以使用JQuery,你可以这样做:
$.each($("img"),function(key,value){
value.src = value.src.replace("cdn/backup/","newcdn/folder/");
});
如果确实有必要,可以为iFrame做同样的事情:
$.each($("iframe"),function(key,value){
value.src = value.src.replace("cdn/backup/","newcdn/folder/");
});
您很可能需要在文档加载时执行此操作。所以
$(document).ready(function(){
$.each($("img"),function(key,value){
value.src = value.src.replace("cdn/backup/","newcdn/folder/");
});
//AND/OR
$.each($("iframe"),function(key,value){
value.src = value.src.replace("cdn/backup/","newcdn/folder/");
});
});
答案 3 :(得分:0)
应该是
var n=str.replace(/cdn\/backup/ig,"newcdn/folder/");
答案 4 :(得分:0)
此代码不符合您的想法。 这个片段 var n = str.replace(“Microsoft”,“W3Schools”); 在字符串str中替换Microsoft与W3Schools的单词。您希望在链接文本中进行此替换。您需要获取链接文本并替换它。一个想法是获取DOM中的所有元素并替换它们的src属性。
var elements=document.getElementsByTagName("*")
for (var i=0, max=all.length; i < max; i++) {
// Do something with the element here
str = elements[i].getAttribute("src")
var newstr=str.replace("cdn/backup/","newcdn/folder/");
elements[i].setAttribute("src",newstr)
}