element.className仅返回“未定义”

时间:2019-04-02 11:58:35

标签: javascript html css

我正在尝试创建一个交互式的小画廊,人们可以在其中查看/选择一些图片。我用了一些来包含图片,并在其中添加了一些来表示所选的照片。然后,我输入了一些JS代码,以使用的className检查或取消选中照片。

所以我的两个问题是:

  1. 该代码未按预期运行。当我运行导航器时无法选择任何图片。

  2. 控制台仅返回“未定义”,如下面的代码所述。

以下是一些代码:https://i.imgur.com/BDVECeX.jpg

这是我在JS中的第一次尝试,我真的不明白什么是行不通的,所以希望您能得到答案或至少对我有一些提示。 :)

谢谢, 托马斯

3 个答案:

答案 0 :(得分:1)

Select a.*, bc.column2 From a outer apply (select top (1) b.column2 from c join b on c.column3 = b.column3 where c.column1 = a.column1 order by (case when c.column2 > 0 and b.column2 = 'KEYVALUE' then 1 else 2 end), c.column2 desc ) bc; 产生元素的集合。 getElementsByClassName属性在该列表中的特定元素上可用。不在列表本身上。

答案 1 :(得分:0)

问题是document.getElementsByClassName返回HTMLCollectionHTMLCollection。您应该检查其元素的className

您可以遍历它,然后获取每个元素的className

for(let i = 0;i<unslectedClass.length;i++){
   console.log(unselectedClass[i].className);
}

或使用Spread Operator将HTMLCollection转换为实数组并使用forEach()

[...unselectedClass].forEach(x => console.log(x.className))

答案 2 :(得分:0)

如前面的答案中所述,getElementsByClassName方法返回具有您传递给该方法的类名称的元素的HTMLCollection。如果需要访问任何项,则需要像数组一样进行操作。

例如,获取集合的第一个元素。

unselectedClass[0].className;

否则,您可以使用for循环访问集合中的每个元素。

for (var i = 0; i < unselectedClass.length; i++) {
    var class = unselectedClass[i].className;
}