在不编辑html的情况下更改img标签图像的有效方法?

发布于 2024-12-04 12:42:11 字数 409 浏览 0 评论 0原文

我有一个页面显示可下载文件的搜索结果。在每个搜索结果旁边,我有一个图标来表示文件类型,如下所示:

<img src="/icons/ugly/powerpoint.gif" />

我想将 /icons/ugly/powerpoint.gif 更改为 /icons/pretty/powerpoint.gif< /code> 但我不允许修改 HTML。使用 /icons/pretty/powerpoint.gif 而不是 /icons/ugly/powerpoint.gif 的最佳方法是什么?

我的一个想法是在加载页面后使用 javascript 来执行此操作,但不确定这是否是一个好主意。

I have a page that shows search results of downloadable files. Beside each search result, I have an icon to denote the file type like so:

<img src="/icons/ugly/powerpoint.gif" />

I want to change the /icons/ugly/powerpoint.gif to /icons/pretty/powerpoint.gif but I am not allowed to modify the HTML. What is the best way to use /icons/pretty/powerpoint.gif instead of /icons/ugly/powerpoint.gif?

An idea I had was to use javascript to do this after I load the page, but not sure if this is a good idea.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

不再让梦枯萎 2024-12-11 12:42:11

如果您无法编辑 HTML,有两种选择。

1) 服务器端,修改检索到的图像,可能通过使用 URL 重写。

RewriteRule ^(.*)/ugly/(.+\.gif)$ $1/pretty/$2 [L]

2) 客户端,使用 JavaScript 或 JavaScript 之上的一些库工具(例如 jQuery)更改 src 属性。

处理所有图像以实现此目的的 jQuery 代码是:

$('img').attr('src', function(i, src) {
   return src.replace(/\/ugly\//, '/pretty/');
});

There are two options, if you cannot edit the HTML.

1) Server side, modify the image retrieved, possibly via the use of URL rewriting.

RewriteRule ^(.*)/ugly/(.+\.gif)$ $1/pretty/$2 [L]

2) Client side, alter the src attribute, using JavaScript, or some library tool on top of JavaScript, like jQuery.

jQuery code to process all images to achieve this would be:

$('img').attr('src', function(i, src) {
   return src.replace(/\/ugly\//, '/pretty/');
});
北陌 2024-12-11 12:42:11

您可以在 DOM 加载后运行此脚本,但您将加载两个图像,这是低效的:

var imgList = document.getElementsByTagName('img').
    img,
    src;

for(var i = 0; i < imgList.length; i++) {
    img = imgList[i];
    src = img.src;
    img.src = src.replace(/\/ugly\//, '/pretty/');
}

You could run this script once the DOM has loaded, but you would be loading both images which is inefficient:

var imgList = document.getElementsByTagName('img').
    img,
    src;

for(var i = 0; i < imgList.length; i++) {
    img = imgList[i];
    src = img.src;
    img.src = src.replace(/\/ugly\//, '/pretty/');
}
清风夜微凉 2024-12-11 12:42:11

唯一的办法就是使用 JavaScript,没有其​​他办法。使用 JavaScript,您可以操作 DOM 并更改 img 实体的 src 属性。严格来说,您并不是以这种方式更改 HTML,而是更改 HTML 的内部浏览器表示形式。

var picture = document.getElementById("picture"); 
picture.src = "new_picture.jpg";

确保您的目标图像有一个唯一的 ID - 这不是必需的,但可以更轻松地查找实体。

The only way to do is, is using JavaScript, there is no other way. With JavaScript you can manipulate the DOM and change the src attribute of the img entity. Strictly speaking you aren't changing the HTML this way, but the internal browser representation of the HTML.

var picture = document.getElementById("picture"); 
picture.src = "new_picture.jpg";

Make sure your target img's have got a unique ID - this is not needed but makes it easier to lookup entities.

南巷近海 2024-12-11 12:42:11

是的,您可以使用 JavaScript 更改任何图像的 src。您首先需要使用 ID 或类名来识别哪个图像。

document.getElementById('img1').src='....new value';

Yes, you can use JavaScript to change the src of any image. You first need to identify which image using an ID or class name.

document.getElementById('img1').src='....new value';
世俗缘 2024-12-11 12:42:11

如果您想在解析 html 后更改它,而不重新加载页面,您唯一的选择是使用 JavaScript 更改图像的 src 属性。

假设您的图像的 ID 为“myimage”。

document.getElementById('myimage').setAttribute('src', '/icons/pretty/powerpoint.gif');

这样您的图像将有一个新的来源,并将下载并显示新图像而不是上一个图像。

不管怎样,如果你有很多像你所说的具有相同 src 的图像,你应该使用空的 html 元素,比如 div,并使用 css 为每个元素分配相同的背景图像。然后您可以使用 JavaScript 更改显示的背景图像。

这样,您只需为同一类型(或类)的所有图像指定一次图像的 url。

If you want to change it after the html has been parsed, without reloading the page, your only option is to use JavaScript to change the src attribute of your image.

Suppose your image has an id of 'myimage'.

document.getElementById('myimage').setAttribute('src', '/icons/pretty/powerpoint.gif');

This way your image will have a new source and will download and display the new image instead of the previous one.

Anyway, if you have many images with the same src like you said, you should use empty html elements such as divs, and assign the same background image to each using css. Then you can alter the background image displayed with JavaScript.

This way you need to specify the url of your image only once for all the images of the same type (or class).

游魂 2024-12-11 12:42:11

pretty/powerpoint.gif 移动到 ugly/powerpoint.gif

Move pretty/powerpoint.gif to ugly/powerpoint.gif

策马西风 2024-12-11 12:42:11

您应该使用 Javascript/Jquery 来完成此操作。 Jquery 是更简单的选择。只需在 Jquery 官方网站查找 .attr() 示例并更改图像的源路径即可。

You should do this using Javascript/Jquery. Jquery is the easier option. Just look for .attr() examples at Jquery official site and change the source path of the image.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文