No puedo averiguar cuál es el problema con este JSFiddle .
HTML:
<input type="button" value="test" onclick="test()">
JavaScript:
function test(){alert("test");}
Y cuando hago clic en el botón, no pasó nada. La consola dice "prueba no definida"
He leído la documentación de JSFiddle: allí dice que se agrega código JS <head>
y código HTML <body>
(por lo que este código JS es anterior a html y debería funcionar).
javascript
html
jsfiddle
Larry Cinnabar
fuente
fuente
Respuestas:
La función se define dentro de un controlador de carga y, por lo tanto, está en un ámbito diferente. Como señala @ellisbben en los comentarios, puede solucionar esto definiéndolo explícitamente en el
window
objeto. Mejor aún, cámbielo para aplicar el controlador al objeto de forma discreta: http://jsfiddle.net/pUeue/Tenga en cuenta que aplicar el controlador de esta manera, en lugar de en línea, mantiene limpio su HTML. Estoy usando jQuery, pero podría hacerlo con o sin un marco o usando un marco diferente, si lo desea.
fuente
test
se definió dentro de unaonLoad
función; usarlowindow.test = function(){/*...*/}
hace que funcione perfectamente bien.show
a cualquier URL jsFiddle para ver lo que estoy hablando: jsfiddle.net/Yazpj/showSi no especifica la configuración de ajuste, el valor predeterminado es "onLoad". Esto da como resultado que todo JavaScript se incluya en una función que se ejecuta después de que se haya cargado el resultado. Todas las variables son locales para esta función, por lo que no están disponibles en el ámbito global.
Cambie la configuración de envoltura a "sin envoltura" y funcionará:
http://jsfiddle.net/zalun/Yazpj/1/
Cambié el marco a "Sin biblioteca" porque no usas ninguna.
fuente
Hay otra forma de declarar su función en una variable como esta:
jsFiddle
Detalles
EDITAR (basado en los comentarios de @nnnnnn)
@nnnnnn:
Cuando define una función como esta:
La función se define localmente, pero cuando define su función sin
var
:test
se define en elwindow
objeto que se encuentra en el ámbito de nivel superior.Como @zalun dice:
Pero si usa esta sintaxis:
Tienes acceso a la función
test
porque está definida globalmenteReferencias:
fuente
test =
(sinvar
) lo solucionaría.Cambie la configuración de ajuste en el panel Estructuras y extensiones a "Sin ajuste
<body>
".fuente
No hay problema con su código, simplemente elija la extensión onLoad () del lado derecho.
fuente
fuente
HTML:
JavaScript:
fuente