这里新的。我无法访问我网站上的大多数源文件,因此我尝试使用javascript在页面加载时修复一些损坏的图像。
当我将inspect元素用于其中一个损坏的图像时,它显示如下:
<img src="-82.jpg" width="60px">
什么时候应该
<img src="http://example.com/files/images/-82.jpg" width="60px">
这是一堆不同的图像,-82.jpg,-2482.jpg,-3582.jpg
这是我到目前为止所尝试的内容。这似乎有效但由于某种原因它打破了页面上的其他JavaScript。
HTML
<script type="text/javascript" src="http://example.com/files/js/fiximages.js"></script>
<body onload="fixImages();">
我的fiximages.js文件
function fixImages() {
var toReplace = '<img src="-';
var replaceWith ='<img src="http://www.example.com/files/images/-';
document.body.innerHTML = document.body.innerHTML.replace(toReplace, replaceWith);
}
我有点像菜鸟,所以我还需要知道如何将html链接到javascript,以便在页面加载时加载它。谢谢你们。
答案 0 :(得分:5)
这可以解决您的问题:
function fixImages() {
// Create a list of all img which src starts with "-".
var imgs = document.querySelectorAll('img[src^="-"]');
// Loop through this list.
for (var i = 0; i < imgs.length; i++) {
// For each img, replace its src with the correct path + the
// src that's already there.
imgs[i].setAttribute('src', 'http://www.example.com/files/images/' + imgs[i].getAttribute('src'));
}
}
答案 1 :(得分:0)
欢迎来到SO!
您的方法中的问题是,更改正文的纯HTML对于动态页面来说绝不是一个好主意。此外,javascript的replace
在没有正则表达式的情况下使用时,只会替换字符串的第一个出现次数。
现在,当您需要更改元素的属性时,Javascript会有一个名为DOM的操作。网上有很多材料和教程......你应该调查一下!
使用DOM,您可以选择一个元素作为变量,并操纵其属性和属性,因此,在您的情况下,它将是:
function fixImages() {
var imgs = document.getElementsByTagName("img");
for(var i=0; i<imgs.length; i++) {
if(imgs[i].src.indexOf("-") == 0)
imgs[i].src = "http://www.example.com/files/images/" + imgs[i].src;
}
}