Me gustaría pasar un parámetro (es decir, una cadena) a una función Onclick. Por el momento, hago esto:
'<input type="button" onClick="gotoNode(' + result.name + ')" />'
con result.name por ejemplo igual a la cadena "Add". Cuando hago clic en este botón, tengo un error que dice que Add no está definido. Como esta llamada a la función funciona perfectamente con un parámetro numérico, supongo que tiene algo que ver con los símbolos "" de la cadena. ¿Alguien ha tenido este problema antes?
Parece que estás construyendo elementos DOM a partir de cadenas. Sólo tienes que añadir algunas comillas alrededor de result.name:
'<input type="button" onClick="gotoNode(\'' + result.name + '\')" />'
Sin embargo, deberías hacer esto con los métodos DOM adecuados.
var inputElement = document.createElement('input');
inputElement.type = "button"
inputElement.addEventListener('click', function(){
gotoNode(result.name);
});
document.body.appendChild(inputElement);
Sólo ten en cuenta que si se trata de un bucle o algo así, resultado
cambiará antes de que el evento se dispare y tendrás que crear una burbuja de alcance adicional para dar sombra a la variable cambiante.
Sugiero no usar ni siquiera los manejadores HTML onclick
, y usar algo más común como document.getElementById
.
HTML:
<input type="button" id="nodeGoto" />
JavaScript:
document.getElementById("nodeGoto").addEventListener("click", function() {
gotoNode(result.name);
}, false);
Editado: Si el requisito es hacer referencia al objeto global (js) en su código HTML, puede intentar esto. [No utilice comillas (' o ") alrededor de la variable].
[Fiddle][1] referencia.
Javascript:
var result = {name: 'hello'};
function gotoNode(name) {
alert(name);
}
HTML:
<input value="Hello" type="button" onClick="gotoNode(result.name)" />