"getElementsByClassName is not a function" 报错原因

element.getElementsByClassName(""):

返回的含有该类的子元素数组,除了子元素以外的后代元素是获取不到的。要遍历使用,或者.element.getElementsByClassName("")[0]; 这样的方式获取元素。

 

document.getElementsByClassName:

这个才会返回含有该类的后代元素。

 

见MDN对element.getElementsByClassName()的定义:

中文版:

 

Element.getElementsByClassName() 方法返回一个即时更新的(live) HTMLCollection,包含了所有拥有指定 class 的子元素

当在 document 对象上调用此方法时,会检索整个文档,包括根元素。

 

相似地,getElementsByClassName() 方法会在整个文档上执行;它返回指定拥有指定 class 名称的 document 根节点的后代元素

 

英文版本:

The Element method getElementsByClassName() returns a live HTMLCollection which contains every descendant element which has the specified class name or names.

The method getElementsByClassName() on the Document interface works essentially the same way, except it acts on the entire document, starting at the document root.

注:英文版中的descendant是后代的意思,也就是说element.getElementsByClassName("");获取的含有该类名的后代元素,可是这样会报错。

 

西班牙语版:

El método Element.getElementsByClassName() retorna una HTMLCollection "viva" conteniendo todos los elementos hijos que tienen todos los nombres de clase dados. Cuando se llama en el objeto document, se realiza la búsqueda en el documento completo, incluyendo el nodo raíz.

De forma similar, el método Document.getElementsByClassName() actúa en todo el documento; retornará los elementos que sean descendientes del documento raiz especificado que tengan los nombres de clase dados.

 

注:hijos在西语中意思是儿子,返回的是子元素,descendientes,后代的意思。

 

法语版:

La méthode Element.getElementsByClassName() retourne une HTMLCollectioncontenant une référence sur tous les éléments ayant les noms de classes passés en paramètre. Quand la méthode est appelée sur l'objet document, la recherche s'effectue dans le document complet, noeud racine compris.

À l'instar de la méthode Document.getElementsByClassName() qui agit sur le document entier ; elle va retourner les descendants de l'élément spécifié comme document root qui auront les noms de classes passés en paramètre.

注: tous les éléments ayant,全部的含该类名的元素。也没有说明是子元素还是后代元素,传说中法语得的严谨呢?

 

日语版:

The Element.getElementsByClassName() メソッドは、引数で与えられたクラス名を含む全ての 子要素を ライブな HTMLCollectionで返します。 documentオブジェクトで呼ばれたとき、ルートノートを含む全ドキュメントが検索されます。

同様に、Document.getElementsByClassName() メソッドはドキュメント全体に働きます。特定されたドキュメントルート要素の子孫のうち、与えられたクラス名に合う複数のelementを返します。

注:日语也指明了是子元素。

 

俄语版:

Element.getElementsByClassName() метод возвращает объект HTMLCollection, содержащий в себе все дочерние элементы, которые имеют заданные имена классов. Если вызван на объекте document, будут возвращены все элементы, содержащиеся в документе.

Так же, как метод Document.getElementsByClassName() действует на весь документ; это вернет элементы, которые являются потомками корневого элемента, содержащие в себе указанные классы.

注:дочерние элементы 谷歌把它翻译为child node子元素而不是descandants后代元素。

总结:

五局三胜

Element.getElementsByClassName() 返回的是含有该类名的所有子元素集合。

Document.getElementsByClassName() 返回的是含有该类名的后代元素集合。

 

转载于:https://www.cnblogs.com/qiu-freedom/p/9314785.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值