0

我一直在尝试在包含动态生成/分配的 HTML 代码块的 javascript 变量中获取 img 标记中的“src”。

例如:

var post_body = "<div>This is an image <img src='abcd.jpg' /> and this is a paragraph <p>hi there</p> Here we have another image <img src='pqrs.jpg' /></div>"

'post' 变量的内容不是预定义的,它是动态的,其中的 HTML 代码总是在变化。为了获得其中图像的 src,我执行了以下操作。但它并不总是对我有用。

var firstimg = $(post_body).find("img:first").attr("src");

我试图从博客文章的内容中获取博客文章的第一张图片,但这不适用于某些有图片的文章。如何使用 javascript 或 jQuery 做到这一点而不会失败?

4

4 回答 4

9

使用纯 JavaScript,将 HTML 转储到临时元素中并提取它:

var div = document.createElement('div');
div.innerHTML = post_body;
var firstImage = div.getElementsByTagName('img')[0]
var imgSrc = firstImage ? firstImage.src : "";
// or, if you want the unresolved src, as it appears in the original HTML:
var rawImgSrc = firstImage ? firstImage.getAttribute("src") : "";
于 2013-10-06T12:34:55.327 回答
2

更改$(post_body)$(post)

尝试

var post = "<div>This is an image <img src='abcd.jpg' /> and this is a paragraph <p>hi there</p> Here we have another image <img src='pqrs.jpg' /></div>";
var firstimg = $(post).find('img:first').attr('src');
于 2013-10-06T10:24:28.470 回答
0

也许您可以尝试将 id 添加到img标签然后访问它。

var oImg = document.getElementById('myImg');
var attr = oImg.getAttribute('src');

这是一个纯js解决方案。

于 2013-10-06T13:32:02.633 回答
0

晚了但是,如果不希望加载图像,请使用以下内容。

var div = document.createElement('template');
div.innerHTML = post_body;

如果您创建 div 元素,则在您插入 innerHTML 时会加载远程图像,模板会阻止请求。

于 2020-05-10T05:04:18.897 回答