online llamar example desde codepen bootstrap archivo alternative javascript html jsfiddle

llamar - ¿Por qué mi JavaScript no funciona en JSFiddle?



jsfiddle jquery (7)

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 pasa nada. La consola dice "prueba no definida"

He leído la documentación de JSFiddle: allí dice que el código JS se agrega a <head> y el código HTML se agrega a <body> (por lo que este código JS es anterior a html y debería funcionar).


Cambie la configuración de ajuste en el panel de Frameworks & Extensions a "Sin ajuste <body> "


Hay otra manera, declara tu función en una variable como esta:

test = function() { alert("test"); }

jsFiddle

Detalles

EDITAR (basado en los comentarios de @nnnnnn)

@nnnnnn:

¿por qué decir que test = (sin var ) lo arreglaría?

Cuando defines una función como esta:

var test = function(){};

La función se define localmente, pero cuando define su función sin var :

test = function(){};

test se define en el objeto window que está en el alcance del nivel superior.

¿Por qué funciona esto?

Como @zalun decir:

Si no especifica la configuración de ajuste, se establece de manera predeterminada en "onLoad". Esto resulta con todos los JavaScript envueltos en una función ejecutada 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 alcance global.

Pero si usa esta sintaxis:

test = function(){};

Usted tiene acceso a la test función porque está definida globalmente

Referencias

  • https://.com/a/338053/3083093
  • https://.com/a/5830423/3083093

La función se está definiendo dentro de un controlador de carga y, por lo tanto, está en un ámbito diferente. Como @ellisbben toma nota en los comentarios, puede solucionar esto definiéndolo explícitamente en el objeto window . Mejor aún, cámbielo para aplicar el controlador al objeto de forma discreta: http://jsfiddle.net/pUeue/

$(''input[type=button]'').click( function() { alert("test"); });

Tenga en cuenta que la aplicación del controlador de esta manera, en lugar de en línea, mantiene su HTML limpio. Estoy usando jQuery, pero puedes hacerlo con o sin un marco o usando un marco diferente, si quieres.


No hay problema con su código. Simplemente elija la extensión onLoad () desde el lado derecho.


Si no especifica la configuración de ajuste, se establece de manera predeterminada en "onLoad". Esto resulta con todos los JavaScript envueltos en una función ejecutada 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 alcance global.

Cambie la configuración de ajuste a "sin ajuste" y funcionará:

http://jsfiddle.net/zalun/Yazpj/1/

Cambié el marco a "Sin biblioteca" ya que no usas ninguno.


<script> function test(){ alert("test"); } </script> <input type="button" value="test" onclick="test()">


Select OnDomready

HTML:

<input id="dButton" type="button" value="test"/>

JavaScript:

addEventListener(''load'', init, false); function init() { oInput = document.getElementById(''dButton''); oInput.onclick = test; } function test(){ alert("test"); }