Javascript:获取 <img> src 并设置为变量?

IT技术 javascript image src
2021-03-10 08:30:54

如果下面的img存在

<img id="youtubeimg" src="http://i1.ytimg.com/vi/VK4ah66jBvE/0.jpg"/>

脚本是

<script>
var youtubeimgsrc = "something here"

document.write(''+youtubeimgsrc+'')
</script>

结果应该是 http://i1.ytimg.com/vi/VK4ah66jBvE/0.jpg

我该怎么做才能获取图像源并将其设置为变量。

6个回答

只要剧本img,则:

var youtubeimgsrc = document.getElementById("youtubeimg").src;

请参阅getElementByIdDOM 规范。

如果脚本是之前img,那当然img还不存在,那是行不通的。这就是为什么许多人建议将脚本放在body元素末尾的原因之一


旁注:在您的情况下无关紧要,因为您使用了绝对 URL,但是如果您在属性中使用了相对URL,如下所示:

<img id="foo" src="/images/example.png">

... srcreflected 属性将是解析后的URL — 即转换成的绝对 URL。所以如果那是在页面上http://www.example.comdocument.getElementById("foo").src会给你"http://www.example.com/images/example.png"

如果您想要src属性的内容原样,而不被解析,您可以使用getAttributedocument.getElementById("foo").getAttribute("src")那会给你"/images/example.png"我上面的例子。

如果你有一个绝对 URL,比如你问题中的那个,那没关系。

例如这个怎么样:

var youtubeimgsrc = document.getElementById("youtubeimg").getAttribute('src');
不需要getAttribute,src标准记录反射属性,自 90 年代中期以来,每个浏览器都支持(呃,不是按这个顺序;-))。
2021-05-07 08:30:54
@Daew:如果属性中的 URL 是相对的,它们确实会给出不同的返回值,是的。src但是,问题中的 URL是绝对的。
2021-05-10 08:30:54
@TJCrowder:.src.getAttribute('src')返回不同的结果。第一个选项将解析URL,而第二个选项将按原样返回src参数。因此,这是问题的正确答案。
2021-05-16 08:30:54
@TJCrowder:我同意,在大多数用例中,你使用哪一个并不重要。我只是想指出,由于它们返回不同的结果,因此此方法也是相关的,而不仅仅是别名。感谢您更新您的答案 =)
2021-05-16 08:30:54
@TJ Crowder 正确,如果他想添加他可以使用的自定义属性,这只是替代方案。如果我是他,我还是会选择你的答案。
2021-05-17 08:30:54

如果图像上没有 id 但有父 div,这也是您可以使用的技术。

<div id="myDiv"><img src="http://www.example.com/image.png"></div>

var myVar = document.querySelectorAll('#myDiv img')[0].src

在这种情况下,您可以使用它的 id 获取元素getElementById,然后使用.src

var youtubeimgsrc = document.getElementById("youtubeimg").src;
var youtubeimgsrc = document.getElementById('youtubeimg').src;
document.write(youtubeimgsrc);

这是给你的小提琴http://jsfiddle.net/cruxst/dvrEN/