Javascript 书签不会更改图像的来源

标签 javascript bookmarklet

我已经尝试创建一个小书签,该小书签可以简单地用一个其他图像替换所有网站的图像。经过尝试和更多尝试后,我得到了一行应该可以工作的代码,但它就是......不行。

javascript:function img_find() {var imgs = document.querySelectorAll("img");return imgs;}  var images = img_find(); for (var i = 0; i < images.length; i++) {images[i].src.replace(images[i].src, "https://api.time.com/wp-content/uploads/2019/08/caveman-spongebob-spongegar.png";}

这是我尝试过的一些代码。我也尝试过:

javascript:function img_find() {var imgs = document.querySelectorAll("img");return imgs;}  var images = img_find(); for (var i = 0; i < images.length; i++) {images[i].src = "https://api.time.com/wp-content/uploads/2019/08/caveman-spongebob-spongegar.png";}

由于某种原因,这两段代码都不起作用,第一段没有执行任何操作,第二段只是用网址替换整个网页。

最佳答案

正如评论中所述,您的第二个片段按预期工作,至于第一个片段,它不起作用,因为替换方法不会更改传递给它的原始字符串,而是返回一个新的替换字符串。换句话说,在第一个片段中,您应该在 for 循环内编写:

images[i].src = images[i].src.replace(images[i].src, "https://api.time.com/wp-content/uploads/2019/08/caveman-spongebob-spongegar.png");

代替你的:

images[i].src.replace(images[i].src, "https://api.time.com/wp-content/uploads/2019/08/caveman-spongebob-spongegar.png");

也就是说我无论如何都会使用第二个片段,第一个片段就像使用钻头刺穿一张纸。

第一个片段

function img_find() {
  var imgs = document.querySelectorAll("img");
  return imgs;
}

var images = img_find();

for (var i = 0; i < images.length; i++) {
  
  images[i].src = images[i].src.replace(images[i].src, "https://api.time.com/wp-content/uploads/2019/08/caveman-spongebob-spongegar.png");
  
}
<div>
  <img src="https://via.placeholder.com/150" width="150">
  <img src="https://via.placeholder.com/150" width="150">
  <img src="https://via.placeholder.com/150" width="150">
  <img src="https://via.placeholder.com/150" width="150">
  <img src="https://via.placeholder.com/150" width="150">
</div>

第二个片段

function img_find() {
  var imgs = document.querySelectorAll("img");
  return imgs;
}

var images = img_find();

for (var i = 0; i < images.length; i++) {
  
  images[i].src = "https://api.time.com/wp-content/uploads/2019/08/caveman-spongebob-spongegar.png";
  
}
<div>
  <img src="https://via.placeholder.com/150" width="150">
  <img src="https://via.placeholder.com/150" width="150">
  <img src="https://via.placeholder.com/150" width="150">
  <img src="https://via.placeholder.com/150" width="150">
  <img src="https://via.placeholder.com/150" width="150">
</div>

关于Javascript 书签不会更改图像的来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59903558/

相关文章:

javascript - 现代版本 EXT JS 6.2.0 中的 loadRecord() 方法

javascript - 更改过滤器以获取带有或不带有附加 url 查询字符串的文件

javascript - 如何定义单击 div 时将在两个函数中使用的变量值?

javascript - 如何为隐藏的输入和自定义标签提供相同的行为

javascript - 页面顶部 Javascript 书签

javascript - 是否可以创建一个空白页面,其中包含 'pre-populated' 代码?

javascript - 将所有包含图像的链接更改为 : javascript(alert(thehref));

Javascript:获取所有表单输入值作为数组

javascript - 除了 URL 之外,如何获取此 "Share"按钮以获取当前 URL HTML 标题?

javascript - 如何附加此文本而不是替换它?