-6

我想用 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

所以,这个代码对我不起作用。如果脚本有任何错误,请更正。提前致谢。

4

5 回答 5

2

如果您尝试更改<img>标签的 src(这是我的假设,阅读问题),那么您需要执行以下操作:

function changeSrc() {
    var img = document.getElementsByTagName('img')[0];
    img.src = img.src.replace('cdn/backup/', 'newcdn/folder/');
}

window.onload = changeSrc;

从我读到的评论中,您想更改所有srcs,因此代码将如下所示:

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;
于 2013-06-18T11:43:54.587 回答
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/');
}
于 2013-06-18T11:45:58.127 回答
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/");
    });
});
于 2013-06-18T11:51:41.140 回答
0

它应该是

var n=str.replace(/cdn\/backup/ig,"newcdn/folder/");
于 2013-06-18T11:43:19.380 回答
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)

}

于 2013-06-18T11:52:28.310 回答