javascript 我想在访问特定URL时添加一个类[重复]

vxbzzdmp  于 2023-06-28  发布在  Java
关注(0)|答案(2)|浏览(82)

此问题已在此处有答案

What do querySelectorAll and getElementsBy* methods return?(12个回答)
10小时前关闭。
我输入了如下代码,以便只在特定的URL中添加类,但它不起作用。
你能帮我看看出了什么问题吗?

if(location.href.indexOf('url') > -1){ 
    document.getElementsByClassName('className').classList.add('NewClass');
}
lokaqttq

lokaqttq1#

代码中的问题在于getElementsByClassName的使用。这个函数返回一个元素的集合,而不是单个元素,即使只有一个元素具有指定的类名。因此,在添加类之前,需要从集合中访问所需的元素。

if (location.href.indexOf('url') > -1) { 
    const elements = document.getElementsByClassName('className');
    if (elements.length > 0) {
        elements[0].classList.add('NewClass');
    }
}

在此代码中,getElementsByClassName返回具有指定类名的元素集合。我们检查集合是否有任何元素(elements.length > 0),如果有,我们使用elements[0]访问第一个元素,然后使用classList.add('NewClass')NewClass添加到它。

3okqufwl

3okqufwl2#

getElementsByClassName方法返回一个HTML集合,其中包含具有指定类名的所有元素。若要将类添加到集合中的元素,需要循环遍历集合并将类添加到每个单独的元素。
试试这个:

if (location.href.indexOf('url') > -1) { 
  var elements = document.getElementsByClassName('className');
  for (var i = 0; i < elements.length; i++) {
    elements[i].classList.add('NewClass');
  }
}

在这段代码中,我们首先将HTML集合存储在elements变量中。然后,我们使用for循环迭代集合中的每个元素,并使用classList.add方法将类'NewClass'添加到每个单独的元素。

相关问题