propiedad - error en tiempo de ejecución de javascript: ''$'' no está definido
Error de referencia de Javascript no capturado La función no está definida (3)
Compruebe el violín para ver el fallo que está ocurriendo.
Cuando agrego Datos (incluso si lo dejo vacío) al cuadro de texto y trato de hacer clic en "Agregar" no hace nada.
Abrir la consola de Chrome y Firefox me da el mismo error, dice que "changeText2 ()" no está definido.
¿Cómo puedo arreglar esto? Me he topado con este error varias veces y la mayoría tenía soluciones muy extrañas, pero no estoy seguro del método para evitarlo o de lo que estoy haciendo mal.
Parece que eliminar las declaraciones de variables globales lo soluciona la mayoría del tiempo, sin embargo, las necesito en este caso y preferiría saber por qué y cómo se produce este error.
Cualquier ayuda es muy apreciada.
Javascript:
var list = document.getElementById(''deliveryIdArray'');
var names = [];
function changeText2() {
var deliveryIdentification = document.getElementById(''deliveryIdentification'').value;
names.push(deliveryIdentification);//simply add new name to array;
//array changed re-render list
renderList();
}
function renderList(){
while (list.firstChild) {
list.removeChild(list.firstChild);
}
//create each li again
for(var i=0;i<names.length;i++){
var entry = document.createElement(''li'');
entry.appendChild(document.createTextNode(names[i]));
var removeButton = document.createElement(''button'');
removeButton.appendChild(document.createTextNode("remove"));
removeButton.setAttribute(''onClick'',''removeName(''+i+'')'');
entry.appendChild(removeButton);
list.appendChild(entry);
}
}
function removeName(nameindex){
names.splice(nameindex,1);
//array changed re-render list
renderList();
}
function getDeliveries(){
return names;
}
HTML:
<b>Number(s): </b>
<input id = "deliveryIdentification" name = "deliveryIdentification" type = "text" size = "16" maxlength = "30">
<!-- Array Area Creation -->
<input type=''button'' onclick=''changeText2()'' value=''Add'' />
<ol id="deliveryIdArray">
</ol>
Fiddle: http://jsfiddle.net/vSHQD/
Cambie el ajuste de " onload
" a " No wrap - in <body>
"
La función definida tiene un alcance diferente.
En JSFiddle, cuando establece el ajuste en "onLoad" o "onDomready", las funciones que define solo se definen dentro de ese bloque y no pueden acceder a ellas los manejadores de eventos externos.
La solución más fácil es cambiar:
function something(...)
A:
window.something = function(...)
Si está utilizando Angular.js, las funciones incorporadas en HTML, como onclick = "function ()" o onchange = "function ()". Ellos no se registrarán. Necesitas hacer los eventos de cambio en el javascript. Como:
$(''#exampleBtn'').click(function() {
function();
});