Javascript getElementsByTagName(“div”)我在标记什么?
我试图将一组div“GalleryBox”(位于另一个div“galleryimages”中)的ID设置为递增,即picture1、picture2等 我看到过类似的问题,并试图让我的头脑绕过它们,但这很难。现在我的问题是,我从第二行得到了什么?什么是“厨房盒子”?我是否能够像一个数组一样循环使用它,并像我尝试的那样标记IDJavascript getElementsByTagName(“div”)我在标记什么?,javascript,gallery,getelementsbytagname,Javascript,Gallery,Getelementsbytagname,我试图将一组div“GalleryBox”(位于另一个div“galleryimages”中)的ID设置为递增,即picture1、picture2等 我看到过类似的问题,并试图让我的头脑绕过它们,但这很难。现在我的问题是,我从第二行得到了什么?什么是“厨房盒子”?我是否能够像一个数组一样循环使用它,并像我尝试的那样标记ID var galleryimages = document.getElementById("galleryimages"); var galleryboxes = galle
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++;
}
var gallerymages=document.getElementById(“gallerymages”);
var gallerybox=gallerymages.getElementsByTagName(“div”);
var k=1;
对于(变量i=0;i
代码似乎很有效,但我不认为我实际上是在标记我想要标记的div;我检查了“picture1”的内容,结果显示为空(应该是一张图片和一些文本)。
GalleryBox
提供了一个节点列表,您可以像数组一样迭代,但这里有一个错误
galleryboxes[i].setAttribute=("id", "picture" + k);
应该是
galleryboxes[i].setAttribute("id", "picture" + k);
请注意缺少=
也可以使用id属性来完成
galleryboxes[i].id = "picture" + k;
GalleryBox是一个数组,包含元素“GalleryImage”中的所有div
...
此文本将不在数组中
如果您的代码与上面类似,那么变量gallerybox
将只包含div
至于当你检查“picture1”的内容时,它可能是空的,我想你已经在css中为#picture1定义了一个背景图像,对吗
无论如何,您应该使用firebug之类的工具来查看生成的DOM。这样,您可以更轻松地进行调试。如果您希望以后以编程方式访问属性(至少如果您希望它能够一致工作),则需要直接设置属性(
GalleryBox[i].id
)。因此:
var gallerymages=document.getElementById(“gallerymages”);
var gallerybox=gallerymages.getElementsByTagName(“div”);
对于(变量i=0;i
例如。从第二行我可以得到什么?
问题是:
var galleryboxes = galleryimages.getElementsByTagName("div");
这样做的目的是提供一个活动的节点列表
,其中包含所有标记名为
的元素,这些元素是变量galleryimages
表示的元素的子元素。注意,这不是一个实际的数组,数组和节点列表之间有区别的特征。最值得注意的是,nodeList
不继承自数组
构造函数,因此不包含所有数组通用的基本方法,如push
、pop
和sort
我是否能够像一个数组一样循环使用它,并像我尝试的那样标记ID?
对。这对我们来说很容易,因为幸运的是nodeList
s具有length
属性。您已经演示了如何循环它们,但设置属性的行格式不正确:
galleryboxes[i].setAttribute=("id", "picture" + k);
等号不应该在那里。这将调用一个语法错误。如果去掉相等值,代码就可以正常工作。我知道,您正在这里寻找javascript答案,但如果您也愿意,也可以尝试以下jQuery代码:
$("#galleryimages > div").each(function(i) {
$(this).prop("id", "picture" + (i + 1));
});
只看3行代码:)以及我的明显错误,虽然我不完全理解这一点,但它似乎也很重要,否则我的代码就不能正常工作。我会投赞成票,但我似乎还没有这个能力。谢谢虽然我现在将坚持使用javascript,但等效代码对于理解非常有用,谢谢!是的,你说得对。我发布这个代码只是为了给你提供信息。因此,将来如果您想尝试jQuery,您将准备好代码…;)
galleryboxes[i].setAttribute=("id", "picture" + k);
$("#galleryimages > div").each(function(i) {
$(this).prop("id", "picture" + (i + 1));
});