0

我有一个网站,我无法控制其所有内容。我想替换一些代码,但唯一有效的方法似乎破坏了其他一切。(页面不会加载超过脚本,所有其他 javascripts 都不起作用等)

该站点是一家印刷店,因此产品有自己的ID,但我想全部更改

这是我要替换图像上的某些属性的代码示例。我无法控制的服务器生成的代码。(为清楚我的问题而编辑,添加了图像周围的完整代码。缩进编辑以专注于 div、table 和 img)

 <div id="divProduct">

       <div style="float:left;"><center>
 <table class="f2"><tr><td><a href='/diy/mousepad/small-mousepad-93' >
 <img  width='120' height='120' id='P276' src='http://c1.vip-stores.com/img/1-276-0-2-1'  alt='Small Mousepad' title='Small Mousepad' border='0' /><br>
         </a></td></tr></table>
         <a href='/diy/mousepad/small-mousepad-93' >Custom Small Mousepad</a>
         <br /><div class='fs_textsmallprice'>Price:$7.45</div><br />
         </center>
       </div>

       <div style="float:left;"><center>
 <table class="f2"><tr><td><a href='/diy/mousepad/large-mousepad-160' >
 <img  width='120' height='120' id='P465' src='http://c1.vip-stores.com/img/1-465-0-2-1'  alt='Large Mousepad' title='Large Mousepad' border='0' /><br>
         </a></td></tr></table><a href='/diy/mousepad/large-mousepad-160' >                 Custom Large Mousepad </a><br />
         <div class='fs_textsmallprice'>Price:$7.45</div>
         <br /></center>
       </div> 
ETC....

我想替换从 120 到 150 的所有图像的宽度和高度,以及从 0-2-1 到 0-1-1 的所有图像的 src 链接中的最后 3 位数字,以加载更高分辨率的版本。

如果我输入 id 当然 GetElementById 有效,但我想影响页面上加载的所有产品。商店里有超过 1000 种产品,它们根据类别和搜索等显示。你明白了。

以下似乎破坏了一切,我听说使用它很危险,但它也有效:

document.body.innerHTML = document.body.innerHTML.replace(/0-2-1/g, '0-1-1');

如何使用 JAVASCRIPT 安全地做到这一点,使用某种通配符与 src 和 id 或其他什么?

4

2 回答 2

1

为什么不直接做你想做的事情,而不是使用正则表达式处理 HTML 的字符串表示?

var images = document.getElementsByTagName('img');


for (var i=0; i<images.length; i++) {
    var img = images[i];

    if (img.width == '120' && img.height == '120') {
        img.width = '150';
        img.height = '150';
    }

    img.src = img.src.replace(/0-2-1$/, '0-1-1');
}
于 2013-10-17T15:23:10.357 回答
0

如果你的 divProduct 里面没有其他图像,你可以使用这个:

mainWrapper = document.getElementById('divProduct');
setOfImages = mainWrapper.getElementByTagName('img');

for (var x=0; x< setOfImages.length; x++){
// your img is in setOfImages[i];
// your magic of changing stuff
}
于 2013-10-17T14:15:50.583 回答