javascript 中的类和类名有什么区别?

2024-05-02

为了找到某个类名的子对象,我必须创建自己的辅助函数

findChildrenByTagName = function(obj, name){
    var ret = [];
    for (var k in obj.children){
        if (obj.children[k].className === name){
            ret.push(obj.children[k]);
        }
    }
    return ret;
}

其工作原理的一个例子是

var li = document.createElement('li');
var input = document.createElement('input');
input.setAttribute('class','answer_input');
li.appendChild(input);
console.log(findChildrenByTagName(li,"answer_input"));

但是,当我在上面的函数中用类替换上面的 className 时,代码不起作用。所以我自然想知道 class 和 className 之间有什么区别。在谷歌上快速搜索并没有透露任何信息。

另外,返回通用对象的特定类名的子级列表的最佳方法是什么?如果不存在,有没有办法向所有对象添加一个方法,以便我可以调用

li.findChildrenByTagName("answer_input");

而不是上面的全局函数?


让我们把它分成几个可回答的部分:

问题一:

javascript 中的类和类名有什么区别?

你的标题问题。

答案1:

Class 是 html 元素中的一个属性<span class='classy'></span>

而另一方面,.className是一个可以通过调用元素来获取/设置其类的属性。

var element = document.createElement('span');
element.className = 'classy'
// element is <span class='classy'></span>

设置类也可以通过以下方式完成.getAttribute('class') and .setAttribute('class', 'classy')。然而,我们经常更改操纵类,因此它值得拥有自己的.className method.


问题2:

但是,当我在上面的函数中用类替换上面的 className 时,代码不起作用。所以我自然想知道 class 和 className 之间有什么区别。

答案 2:element.class 不是属性。

类可能是元素的属性,但你不能像这样调用它el.class。你这样做的方式是el.className, 就像你已经知道的那样。如果你看一下元素 MDN https://developer.mozilla.org/en-US/docs/Web/API/Element.className,你会看到元素有很多属性和方法,但是.class不是一个。


问题3:

另外,返回通用对象的特定类名的子级列表的最佳方法是什么?

答案 3:使用 .getElementsByClassName

人们经常使用一个又一个的“连锁”方法来达到您想要的效果,而不是使用特定的功能。

根据您的需求,我认为您要求的是.getElementsByClassName方法。这里有完整文档 https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByClassName和摘录:

Element.getElementsByClassName() 方法返回一个实时 HTMLCollection [数组],其中包含具有所有给定类名的所有子元素。

要重用您答案中的示例:

var li = document.createElement('li');
var input = document.createElement('input');
input.setAttribute('class','answer_input');
li.appendChild(input);
console.log(li.getElementsByClassName("answer_input")[0]);
// would return the <input class='answer_input'> as the first element of the HTML array
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javascript 中的类和类名有什么区别? 的相关文章

随机推荐