JavaScript新手在这里,请求温柔。我正在使用的JavaScript资源似乎都说document.images
是对页面上img
元素的引用的数组(更新:除了它不是数组;请参阅下面的Badacadabra的答案)。这很清楚,所以为了深入研究,我写了 this :
<!DOCTYPE html>
<html>
<body>
<img src="http://java2s.com/style/demo/border.png" width="150" height="113">
<img src="http://java2s.com/style/demo/border.png" width="150" height="113">
<img src="http://java2s.com/style/demo/border.png" width="150" height="113">
<p><button onclick="myFunction()">test</button></p>
<p id="demo"></p>
<script>
function myFunction() {
image_report = ""
for (i in document.images) {
image_report = image_report + document.images[i].src + "<br>";
}
document.getElementById("demo").innerHTML = image_report;
}
</script>
</body>
</html>
但是,除了获取页面的三个图像的src
值列表之外,我还得到另外三个未定义src
的对象:
http://java2s.com/style/demo/border.png
http://java2s.com/style/demo/border.png
http://java2s.com/style/demo/border.png
undefined
undefined
undefined
那些是什么,他们在那里做什么?为什么不解释这个问题,例如 here ?我可能遗漏了for...in
的工作原理吗?
答案 0 :(得分:2)
z = (np.linspace(0, h, np.size(u)) * np.outer(np.ones(np.size(u)), np.ones(np.size(u)))).T
语句迭代一个的可枚举属性 对象
for..in
还获得了for...in
.length
,.item
和.namedItem
属性
您也可以使用document.images
循环
for..of
答案 1 :(得分:1)
你可以改用它:
document.getElementsByTagName('img')
答案 2 :(得分:1)
document.images
不数组。
console.log(Array.isArray(document.images));
document.images
是一个 HTMLCollection ,它是一个类似数组的对象。类似数组的对象看起来像一个数组(键是数字),有一个length属性,但不是Array
的实例,并且无法访问Array.prototype
方法。
顺便说一下,这段代码应该有效:
for (var i = 0; i < document.images.length; i++) {
console.log(document.images[i].src);
}