Je ne peux pas trouver quel est le problème avec ce JSFiddle .
HTML:
<input type="button" value="test" onclick="test()">
JavaScript:
function test(){alert("test");}
Et quand je clique sur le bouton - rien ne s'est passé. La console dit "test non défini"
J'ai lu la documentation JSFiddle - là, il est dit que le code JS est ajouté <head>
et le code HTML est ajouté <body>
(donc ce code JS est antérieur au html et devrait fonctionner).
javascript
html
jsfiddle
Larry Cinabre
la source
la source
Réponses:
La fonction est définie dans un gestionnaire de charge et est donc dans une portée différente. Comme @ellisbben le note dans les commentaires, vous pouvez résoudre ce problème en le définissant explicitement sur l'
window
objet. Mieux encore, changez-le pour appliquer le gestionnaire à l'objet discrètement: http://jsfiddle.net/pUeue/Notez que l'application du gestionnaire de cette façon, au lieu d'être en ligne, maintient votre HTML propre. J'utilise jQuery, mais vous pouvez le faire avec ou sans framework ou en utilisant un framework différent, si vous le souhaitez.
la source
test
été défini à l'intérieur d'uneonLoad
fonction; l'utilisationwindow.test = function(){/*...*/}
fait fonctionner parfaitement bien.show
à n'importe quelle URL jsfiddle pour voir de quoi je parle: jsfiddle.net/Yazpj/showSi vous ne spécifiez pas le paramètre d'enroulement, la valeur par défaut est "onLoad". Il en résulte que tout JavaScript est encapsulé dans une fonction exécutée après le chargement du résultat. Toutes les variables sont locales à cette fonction donc indisponibles dans la portée globale.
Changez le paramètre d'habillage sur "pas d'enveloppement" et cela fonctionnera:
http://jsfiddle.net/zalun/Yazpj/1/
J'ai basculé le framework sur "No Library" car vous n'en utilisez pas.
la source
Il existe un autre moyen, déclarez votre fonction dans une variable comme celle-ci:
jsFiddle
Détails
EDIT (basé sur les commentaires de @nnnnnn)
@nnnnnn:
Lorsque vous définissez une fonction comme celle-ci:
La fonction est définie localement, mais lorsque vous définissez votre fonction sans
var
:test
est défini sur l'window
objet qui se trouve dans la portée de niveau supérieur.Comme @zalun dites:
Mais si vous utilisez cette syntaxe:
Vous avez accès à la fonction
test
car elle est définie globalementRéférences :
la source
test =
(sansvar
) le résoudrait.Remplacez le paramètre d'habillage dans le panneau Frameworks et extensions par "Pas d'habillage
<body>
"la source
Il n'y a aucun problème avec votre code, il suffit de choisir l'extension onLoad () à droite.
la source
la source
HTML:
JavaScript:
la source