"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() 返回的是含有該類名的后代元素集合。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM