Richtiger Aufruf einer JavaScript-Methode

7

Gibt es einen Grund, warum ich eine JavaScript-Methode wie folgt aufrufen sollte?

%Vor%

Oder kann ich es einfach so nennen:

%Vor%

Gibt es einen Unterschied?

    
Krummelz 21.09.2010, 14:11
quelle

5 Antworten

18

Der Wert eines onclick -Attributs ist Code, kein URI, also ist dies korrekt (obwohl nicht der einzige Weg, wie Sie es tun könnten, siehe Tangente # 1 unten):

%Vor%

Das ist inkorrekt , aber weitgehend harmlos:

%Vor%

Manchmal denken Leute, dass letzteres das Protokoll javascript verwendet, wie bei Links, aber das ist es nicht. Es macht etwas ganz anderes. Die Sprache des Codes im onclick -Attribut wird auf Seitenebene definiert (und standardmäßig auf JavaScript), und was Sie tatsächlich tun, besteht darin, in Ihrem JavaScript-Code ein Label zu deklarieren und dann aufzurufen %Code%. JavaScript hat Beschriftungen (siehe Tangente 2 unten), obwohl sie nicht oft verwendet werden.

Das Attribut MyMethod unterscheidet sich vollständig vom Attribut onclick für Links:

%Vor%

Da wir Code dort eingeben, wo ein URI erwartet wird, müssen wir einen URI mit dem href -Protokoll angeben, damit der Browser weiß, was wir tun. javascript ist ein Protokoll (wie javascript oder http ), das Brendan Eich (Schöpfer von JavaScript) schlau genug war, sehr, sehr früh zu definieren und zu registrieren (und zu implementieren), so dass es gut unterstützt wird.

Schlussendlich: Am besten machen Sie mailto in Kleinbuchstaben, nicht in Groß- und Kleinbuchstaben, obwohl es nur wirklich wichtig ist, wenn Sie XHTML verwenden.

Tangente # 1

Vielleicht ein wenig off-topic, aber: Die Verwendung der HTML-Attribute zum Verbinden von Handlern ist perfekt und funktioniert gut über den Browser hinweg, aber es vermischt Ihre JavaScript-Ereignisverbindung mit Ihrem HTML-Code. Manche Leute sehen das als eine gute Sache, andere gehören der "unaufdringlichen JavaScript" -Seite an und denken, dass du später alles zusammenbringen solltest. Was Sie tun, liegt an Ihnen. Der unauffällige Ansatz ist besonders nützlich, wenn Ihre HTML-Designer und Ihre JavaScript-Programmierer nicht die gleichen Personen sind (wie es häufig bei großen Teams der Fall ist).

Die unaufdringliche Herangehensweise besagt grundsätzlich: Verwenden Sie nicht die HTML-Attribute dafür, sondern später aus dem Skript. Also statt

%Vor%

Sie könnten diesen HTML haben:

%Vor%

kombiniert mit diesem JavaScript:

%Vor%

... wobei onclick den Kontext verwendet, um herauszufinden, auf welche Registerkarte geklickt wurde, und entsprechend zu verfahren, und setTab wird aufgerufen, sobald das DOM bereit ist. Beachten Sie, dass wir beim Einrichten des Click-Handlers der hookUpTabs auf der Registerkarte div. Eine Funktionsreferenz und keine Zeichenfolge zuweisen.

Ich würde% %_co_de% nicht verwenden, würde ich DOM2-Handler über die Funktionen onclick (Standard) / onclick (Microsoft) verwenden. Aber ich wollte nicht in Standard-gegen-Microsoft-Sachen einsteigen. Und Sie können auch nicht, wenn Sie anfangen, unauffälliges JavaScript zu verwenden, eine Bibliothek verwenden, um das Zeug für Sie zu handhaben ( jQuery , Prototyp , Schließung , was auch immer ).

Tangente # 2

Eine weitere milde Off-Topic-Tangente: Also, was sind diese JavaScript-Etiketten dann? Details in der Spezifikation wie immer, aber hier ist ein Beispiel für die Verwendung von Labels mit einer gerichteten addEventListener -Anweisung in einer Schleife:

%Vor%

Live-Beispiel

    
T.J. Crowder 21.09.2010, 14:12
quelle
10

Hier ist eine unaufdringliche Alternative. Inline-JavaScript-Code macht es schwer, Ihrem HTML-Code zu folgen. Das Trennen von JavaScript (Logik) von Ihrem HTML (Präsentation) ist der richtige Weg. In jQuery wäre es etwa so:

%Vor%

Legen Sie das in Ihren Kopf oder eine externe Skriptdatei. Vorzugsweise wo Ihr MyMethod definiert ist. Jetzt ist Ihr Element sauber und alle Methodenaufrufe befinden sich an derselben Stelle, anstatt über den HTML-Code verteilt zu sein.

    
Stephen 21.09.2010 14:19
quelle
2

Der Unterschied ist, dass der erste falsch ist.

Der erste funktioniert einfach, weil someidentifier: die Syntax für eine Bezeichnung in JavaScript ist, aber da dort keine Beschriftung benötigt wird, ist es nicht sinnvoll, sie hinzuzufügen.

    
RoToRa 21.09.2010 14:14
quelle
2

onclick setzt bereits voraus, dass Sie JavaScript-Code ausführen. Daher ist keine javascript: Pseudo-URL erforderlich.

    
Marc B 21.09.2010 14:13
quelle
1

AFAIK, Sie definieren hier eine Sprungmarke mit dem Namen Javascript . Du solltest das nicht tun. Dies macht keinen Unterschied für den Anruf. Dies ist der Weg zu gehen:

%Vor%     
jwueller 21.09.2010 14:14
quelle

Tags und Links