Antworten:
In Ereignishandlern wie der onsubmit
Rückgabe von false ist dies häufig eine Möglichkeit, dem Ereignis mitzuteilen, dass es nicht tatsächlich ausgelöst werden soll. In diesem onsubmit
Fall würde dies bedeuten, dass das Formular nicht gesendet wird.
event.preventDefault()
diese Funktionalität zu verwenden. Ich glaube, die Rückgabe von false ist veraltet und funktioniert nicht mehr immer.
return false
ist das in der Methode, ändert dies etwas?
Ich vermute, dass Sie sich auf die Tatsache beziehen, dass Sie oft eine "falsche Rückgabe" setzen müssen; Aussage in Ihren Event-Handlern, dh
<a href="#" onclick="doSomeFunction(); return false;">...
Die 'return false;' In diesem Fall kann der Browser nicht zum aktuellen Speicherort springen, wie durch href = "#" angegeben. Stattdessen wird nur doSomeFunction () ausgeführt. Dies ist nützlich, wenn Sie Ankertags Ereignisse hinzufügen möchten, der Browser jedoch nicht bei jedem Klick zu jedem Anker auf und ab springen soll
Es wird verwendet, um die Ausbreitung des Ereignisses zu stoppen . Sie sehen, wenn Sie zwei Elemente mit einem Klickereignishandler haben (zum Beispiel)
-----------------------------------
| element1 |
| ------------------------- |
| |element2 | |
| ------------------------- |
| |
-----------------------------------
Wenn Sie auf das innere Element (Element2) klicken, wird in beiden Elementen ein Klickereignis ausgelöst: 1 und 2. Es wird als "Ereignisblasen" bezeichnet. Wenn Sie das Ereignis nur in Element2 behandeln möchten, muss der Ereignishandler false zurückgeben, um die Ereignisausbreitung zu stoppen.
Ein weiteres Beispiel ist der Link-On-Click-Handler. Wenn Sie verhindern möchten, dass ein Linkformular funktioniert. Sie können einen Onclick-Handler hinzufügen und false zurückgeben. So verhindern Sie, dass das Ereignis an den Standardhandler weitergegeben wird.
false
von einem Ereignishandler zurückkehren, wird die mit einem Ereignis verknüpfte Standardaktion verhindert. Sie können dies auch über einen Aufruf event.preventDefault()
oder eine Einstellung event.returnValue = false
(IE) tun . Um zu verhindern, dass das Ereignis sprudelt, müssen Sie anrufen event.stopPropagation()
oder einstellen event.cancelBubble = true
(IE)
Äh ... wie wäre es mit einer booleschen Funktion, um "nicht wahr" anzuzeigen?
Ich bin auch auf diese Seite gekommen, nachdem ich nach "js" gesucht habe, wenn ich "return false" verwenden soll. Unter den anderen Suchergebnissen befand sich eine Seite, die ich auf Chris Coyiers CSS-Tricks-Website weitaus nützlicher und unkomplizierter fand: Der Unterschied zwischen 'return false;' und 'e.preventDefault ();'
Der Kern seines Artikels ist:
function () {return false; }}
// ENTSPRICHT
Funktion (e) {e.preventDefault (); e.stopPropagation (); }}
obwohl ich trotzdem empfehlen würde, den ganzen Artikel zu lesen.
Update: Nachdem die Vorteile der Verwendung von return false diskutiert wurden; als Ersatz für e.preventDefault (); & e.stopPropagation (); Einer meiner Mitarbeiter wies darauf hin, dass return false auch die Ausführung von Rückrufen stoppt, wie in diesem Artikel beschrieben: jQuery-Ereignisse: Stop (Mis) Using Return False .
function() { return false; }
GLEICH function(e) { e.preventDefault(); e.stopPropagation(); }
, aber in rein js, es ist nicht die gleiche, function() { return false; }
GLEICH function(e) { e.preventDefault(); }
tatsächlich. Es stoppt nicht die Ausbreitung.
Ich denke, eine bessere Frage ist, warum Sie in einem Fall, in dem Sie einen booleschen Satz von Rückgabewerten auswerten, NICHT true / false verwenden würden . Ich meine, Sie könnten wahrscheinlich true / null, true / -1, andere Verschiedenes haben. Javascript "falsche" Werte zu ersetzen, aber warum sollten Sie das tun?
Wenn Sie Javascript-Code von einem Ankertag aus auslösen möchten, sollte der Onclick-Handler anstelle des Javascript: Pseudo-Protokolls verwendet werden. Der im Onclick-Handler ausgeführte Javascript-Code muss true oder false (oder einen Ausdruck, der auf true oder false ausgewertet wird) an das Tag selbst zurückgeben. Wenn er true zurückgibt, wird die HREF des Ankers wie ein normaler Link verfolgt. Wenn false zurückgegeben wird, wird der HREF ignoriert. Deshalb "return false"; wird häufig am Ende des Codes in einem Onclick-Handler eingefügt.
Wenn eine return-Anweisung in einer Funktion aufgerufen wird, wird die Ausführung dieser Funktion gestoppt. Wenn angegeben, wird ein bestimmter Wert an den Funktionsaufrufer zurückgegeben. Wenn der Ausdruck weggelassen wird, wird stattdessen undefined zurückgegeben.
Weitere Informationen finden Sie auf der MDN-Dokumentenseite fürreturn
.
Geben Sie false nur mit zurück, wenn Sie eine abgenutzte Funktion haben (durch einen Test) oder wenn Sie eine Funktion stoppen möchten. Verwenden Sie beispielsweise return false am Ende "onsubmit".
Auch dieser kurze und interessante Link zum Durchlesen https://www.w3schools.com/jsref/event_preventdefault.asp
Definition und Verwendung
Die Methode prepareDefault () bricht das Ereignis ab, wenn es abgebrochen werden kann. Dies bedeutet, dass die zum Ereignis gehörende Standardaktion nicht ausgeführt wird.
Dies kann beispielsweise nützlich sein, wenn:
Clicking on a "Submit" button, prevent it from submitting a form
Clicking on a link, prevent the link from following the URL
Hinweis: Nicht alle Ereignisse können abgebrochen werden. Verwenden Sie die Eigenschaft cancelable, um herauszufinden, ob ein Ereignis stornierbar ist.
Hinweis: Die Methode präventDefault () verhindert nicht die weitere Weitergabe eines Ereignisses durch das DOM. Verwenden Sie dazu die stopPropagation () -Methode.