Ich kann nicht herausfinden, wo das Problem liegt JSFiddle liegt .
HTML:
<input type="button" value="test" onclick="test()">
JavaScript:
function test(){alert("test");}
Und wenn ich auf die Schaltfläche klicke, ist nichts passiert. Die Konsole sagt "Test nicht definiert"
Ich habe die JSFiddle-Dokumentation gelesen - dort steht, dass JS-Code hinzugefügt <head>
und HTML-Code hinzugefügt wird <body>
(dieser JS-Code ist also früher als HTML und sollte funktionieren).
javascript
html
jsfiddle
Larry Cinnabar
quelle
quelle
Antworten:
Die Funktion wird in einem Load-Handler definiert und liegt somit in einem anderen Bereich. Wie @ellisbben in den Kommentaren feststellt, können Sie dies beheben, indem Sie es explizit für das
window
Objekt definieren. Besser noch, ändern Sie es, um den Handler unauffällig auf das Objekt anzuwenden: http://jsfiddle.net/pUeue/Beachten Sie, dass das Anwenden des Handlers auf diese Weise anstelle von Inline Ihren HTML-Code sauber hält. Ich verwende jQuery, aber Sie können es mit oder ohne Framework oder mit einem anderen Framework tun, wenn Sie möchten.
quelle
test
es innerhalb eineronLoad
Funktion definiert wurde. Mitwindow.test = function(){/*...*/}
macht es perfekt.show
eine beliebige jsfiddle-URL hinzu, um zu sehen, wovon ich spreche: jsfiddle.net/Yazpj/showWenn Sie die Wrap-Einstellung nicht angeben, wird standardmäßig "onLoad" verwendet. Dies führt dazu, dass sämtliches JavaScript in eine Funktion eingeschlossen wird, die ausgeführt wird, nachdem das Ergebnis geladen wurde. Alle Variablen sind lokal für diese Funktion und daher im globalen Bereich nicht verfügbar.
Ändern Sie die Wrapping-Einstellung auf "No Wrap" und es wird funktionieren:
http://jsfiddle.net/zalun/Yazpj/1/
Ich habe das Framework auf "Keine Bibliothek" umgestellt, da Sie keine verwenden.
quelle
Es gibt eine andere Möglichkeit, Ihre Funktion in eine Variable wie diese zu deklarieren:
jsFiddle
Einzelheiten
BEARBEITEN (basierend auf den Kommentaren von @nnnnnn)
@nnnnnn:
Wenn Sie eine Funktion wie diese definieren:
Die Funktion wird lokal definiert, aber wenn Sie Ihre Funktion definieren ohne
var
:test
wird für daswindow
Objekt definiert, das sich im Bereich der obersten Ebene befindet.Wie @zalun sagen:
Aber wenn Sie diese Syntax verwenden:
Sie haben Zugriff auf die Funktion,
test
da sie global definiert istVerweise :
quelle
test =
(ohnevar
) das Problem beheben würde.Ändern Sie die Wrap-Einstellung im Bereich "Frameworks & Extensions" in "No Wrap-In
<body>
".quelle
Es gibt kein Problem mit Ihrem Code. Wählen Sie einfach die Erweiterung onLoad () auf der rechten Seite.
quelle
quelle
HTML:
JavaScript:
quelle