2016-07-11 32 views
-2

ich über den Unterschied zwischen den beide gelesen habe: Difference between dot and bracket notationMit Javascript .length mit Punktnotation und Klammer-Notation erzeugen anderes Ergebnis

jedoch

wenn ich versuche, ein einfaches HTML-Beispiel mit dem aktuellen JavaScript .length, um gemeinsam zu beziehen sie:

<ul id="allList"> 
    <li>a</li> 
    <li>b</li> 
    <li>c</li> 
    <li>d</li> 
    <li>e</li> 
    <li>f</li> 
</ul> 

console.log(document.getElementById("allList").getElementsByTagName("li").length); 
//6 


console.log(document.getElementById("allList").getElementsByTagName("li")[length]); 
//<li>a</li> 

Mit Punktnotation gibt mir , weil es insgesamt 6 Arrays aus dem HTML-Register, aber wenn kommt zu Klammer, warum gibt es mir stattdessen die erste HTML-Liste?

Arbeitsbeispiel hier: sample code

Updates: Ok ich gerade herausgefunden, dass ich die Anführungszeichen verpasst. Es sollte ["Länge"] statt [Länge] sein. Frage gelöst.

+0

Haben Sie eine Variable mit dem Namen 'length', die in diesem Bereich definiert ist? – thefourtheye

+1

Ich denke du solltest '['length']' anstelle von '[length]' –

+0

verwenden Ja, ich habe die Zitate verpasst. – Vincent1989

Antwort

1

Die eckige Klammernnotation erfordert Zeichenfolge. length ist eine Variable. Da Sie es nicht explizit festgelegt haben, ist it is window.length die Anzahl der Frames im Dokument (die 0 sein muss, da Sie das erste Element in der Knotenliste erhalten).

Wenn Sie auf die length -Eigenschaft zugreifen möchten, dann sagen Sie ["length"] und übergeben Sie tatsächlich eine Zeichenfolge.

1

Try ‚Länge‘ in den Klammern statt Länge

Grundsätzlich setzen Sie versuchen, eine Objekteigenschaft zuzugreifen. Hier ist das Objekt ein Array, aber es funktioniert für andere Objekte. Sie können auf die Eigenschaft zugreifen, indem Sie ".propertyName" verwenden oder Klammern mit ['popertyName'] verwenden.

+0

"Objekt ist ein Array" - Nein, es ist eine HTMLCollection – Quentin

+0

Ja Du hast recht, aber es ist einfacher, es als ein Array zu sehen, um die Längeneigenschaft zu verstehen ^^ Aber ja, du hast Recht;) –

0

[] Dies bedeutet, dass Element aus einem Array abgerufen wird. Es scheint so, als ob deine 'length' Variable irgendwo mit 0 definiert ist, deshalb gibt es dir das erste Element von 'li' Array.

+0

"Element aus einem Array" - Eigenschaft von einer beliebigen Art von Objekt. In diesem Fall handelt es sich um eine HTMLCollection, nicht um ein Array. – Quentin

+0

@Quentin du hast Recht, sorry –