开发者问题收集

JavaScript 循环和数组

2018-09-19
87

我对 JavaScript 还很陌生,正在努力学习一本书并完成练习。

有人能帮我解释一下这个循环中发生了什么,以及最后数组中存储了什么吗?

我知道它在 HTML 中将 image.src 设置为“href”值,但为什么在 getAtribute 之前需要链接? 它将“href”和“title”存储在哪里?

"use strict";
var $ = function (id) { return document.getElementById(id); };
var imageCache = [];

var i, link, image;
for ( i = 0; i < links.length; i++ ) {
    link = links[i];
    image = new Image();
    image.src = link.getAttribute("href");
    image.title = link.getAttribute("title");
    imageCache[imageCache.length] = image;
}

提前感谢您的帮助!这个社区在解决这个问题时救了我一命。

2个回答

but why does it need link before getAtribute

如果您在 Google 上搜索 getAttribute ,您会发现它是在 HTML 元素上调用的方法。因此 links 似乎是 HTML 元素(可能是链接元素)的数组。

Where is it storing the "href" and the "title"?

它将它们存储为此对象的属性: image = new Image()

Giorgi Moniava
2018-09-19

正如评论中提到的,您没有向我们展示 links 数组是什么样子的。但是,假设它是一个 DOM 元素链接数组,下面是该代码的演示:

"use strict";
var $ = function (id) { return document.getElementById(id); };
var imageCache = [];

var i, link, image;
//looping through every element of links array
for ( i = 0; i < links.length; i++ ) {
    link = links[i]; //this is the link we're at in the loop, making it easier to reference
    image = new Image(); //creating a new Image element
    image.src = link.getAttribute("href"); //set the src attribute of the image to the href of the link
    image.title = link.getAttribute("title"); //set the title of the image to the title of the link
    imageCache[imageCache.length] = image; //put the image in the imageCache array for use later
}

话虽如此,我认为您可以研究一下 Array.map() ,作为将一个链接数组转换为另一个图像数组的替代方法。

Michael Tallino
2018-09-19