Wie bekomme ich ein Attribut von einem Link-Tag in reinem Javascript?

8
%Vor%

Wie kann ich das href-Attribut dieses Link-Tags erhalten, ohne eine Javascript-Bibliothek zu verwenden?

Im Moment benutze ich den Code unten, um das zu erreichen, aber ich möchte wissen, ob es eine einfachere Lösung gibt.

%Vor%     
WTFIsGoingOn 25.02.2012, 06:39
quelle

4 Antworten

28

Moderne Browser unterstützen querySelector () und querySelectorAll () :

%Vor%

Siehe Browser-Support-Diagramm .

    
jholster 25.02.2012, 06:45
quelle
7

Ursprünglicher Code:

%Vor%

...

%Vor%
  1. Das obige Markup ist ein link -Element, kein a "Link-Tag" .

  2. Es gibt kein "Javascript", es gibt mehrere verschiedene ECMAScript-Implementierungen. Der Begriff "javascript "ist irreführend und sollte nicht als Überbegriff für diese Programmiersprachen verwendet werden.

    Es kann kein "reines Javascript" in einem Webbrowser geben, der eine Host-Umgebung ist. Sogar document bezieht sich auf einen Host (- bereitgestellt) Objekt , der nicht Teil einer Kernsprache ist ( ECMAScript Language Specification, 5.1 Edition [ECMA-262-5.1] , Abschnitt 4).

  3. Deklarieren Sie immer Ihre IDs ( i ist nicht deklariert). Sie nicht zu deklarieren und sie nicht an einen Ausführungskontext anzuhängen, hat Nebenwirkungen, die von Lecks in aufrufenden Ausführungskontexten bis zu Laufzeitfehlern reichen. Daher wird solcher Code nicht in ECMAScript Ed ausgeführt. 5.x strict mode, es wirft eine Ausnahme ReferenceError (ECMA-262-5.1, Abschnitte 12.6.4 und 8.7.2).

  4. Verwenden Sie niemals die Anweisung for - in mit array-ähnlichen Objekten, insbesondere außerhalb von Tests nicht mit Host Objekten ( links bezieht sich auf eins). Weder die Berücksichtigung nur numerischer Eigenschaftsnamen noch die Iterationsreihenfolge ist garantiert (ECMA-262-5.1, Abschnitt 12.6.4).

  5. DRY : Vermeiden Sie es, zweimal auf dieselbe Eigenschaft zuzugreifen (Sie greifen zweimal auf links[i] zu). Andernfalls wäre das Ergebnis eine größere Variante im Programm (das Objekt könnte sich in der Zwischenzeit geändert haben), und der Ansatz wäre unnötig ineffizient und schwieriger zu warten.

  6. Vermeiden Sie den Aufruf der Methoden getAttribute() und setAttribute() von Elementobjekten zugunsten des Zugriffs auf Attributeigenschaften, die Getter und Setter enthalten . Erstere sind weniger rückwärtskompatibel und bekannt als unzuverlässig, insbesondere in MSHTML / IE, wo es keine richtige Unterscheidung zwischen Attributwerten und Attributeigenschaftswerten gibt.

    %Vor%
  7. Verwenden Sie das id -Attribut und die document.getElementById() -Methode, wenn Sie ein Element schnell referenzieren möchten (aber auch die Verwendung von vom Host bereitgestellten Sammlungen):

    %Vor%

    ...

    %Vor%
  8. Verwenden Sie nicht XHTML (Syntax), es sei denn, Sie müssen (entfernen Sie den abschließenden Schrägstrich, wenn es noch gültig ist, siehe W3C Validator ). Insbesondere bei LINK elements, die sich im HEAD -Element befinden müssen, ist es ein Syntaxfehler in HTML bis Version 4.01, der keine standardisierte Lösung . HTML5 spezifiziert es , aber das ist es noch ein Arbeitsentwurf und noch nicht vollständig in Benutzeragenten implementiert .

  9. Leute, die sich damit zufrieden geben, nur "screw $ browser" zu sagen, haben keine ausreichende Berufserfahrung (siehe zum Beispiel den Internet Explorer 6 Countdown , von Microsoft , die immer noch eine große Anzahl [derzeit 25,1%] von IE 6-Benutzern in Schwellenländern zeigt). Sie wären gut beraten, die vorherige Gruppe zu diesem Thema zu ignorieren.

PointedEars 25.02.2012 07:38
quelle
-1

Ja, durch Angabe eines ID-Tags. Ссылка

    
Shawn Taylor 25.02.2012 06:47
quelle
-3

Sie könnten JQuery verwenden:

%Vor%     
WFergon 11.02.2014 15:27
quelle

Tags und Links