Javascript getElementsByTagName("div") 我要标记什么?

Mat*_*hel 2 javascript gallery getelementsbytagname

我正在尝试将一组 div“galleryboxes”(位于另一个 div“galleryimages”内)的 ID 设置为递增增量,即。图片1、图片2等

我见过与此类似的问题,并试图了解它们,但这很困难。现在我的问题是,我从这里的第二行得到什么?什么是“画廊盒”?我是否能够像我尝试的那样像数组和标签 id 一样循环遍历它?

var galleryimages = document.getElementById("galleryimages");
var galleryboxes = galleryimages.getElementsByTagName("div");

var k = 1;

for (var i = 0; i < galleryboxes.length; i++) {
galleryboxes[i].setAttribute=("id", "picture" + k);
k++;
}
Run Code Online (Sandbox Code Playgroud)

代码似乎有效,但我认为我实际上并没有标记我想要标记的 div;我检查“picture1”的内容是什么,它显示为空(它应该充满了图片和一些文字)。

0x4*_*2D2 5

我从这里的第二行得到什么?

有问题的行是这样的:

var galleryboxes = galleryimages.getElementsByTagName("div");
Run Code Online (Sandbox Code Playgroud)

这样做的目的是为变量所代表的元素的子nodeList元素提供带有标记名称的所有元素的实时完整。请注意,这不是一个实际的数组,数组和. 最值得注意的是,一个不从继承的构造,因此不包含像基本方法,以及适用于所有阵列。<div>galleryimagesnodeListnodeListArraypushpopsort

我是否能够像我尝试的那样像数组和标签 id 一样循环遍历它?

是的。这对我们来说很容易,因为幸运的nodeList是 s 有一个length属性。您已经展示了如何遍历它们,但是设置属性的行格式不正确:

galleryboxes[i].setAttribute=("id", "picture" + k);
Run Code Online (Sandbox Code Playgroud)

等号不应该在那里。这会引发语法错误。如果你去掉相等,代码工作正常。