parâmetro passar cadeia de caracteres em uma função onclick

Eu gostaria de passar um parâmetro (ou seja, uma string) para uma função Onclick. Por enquanto, eu faço isto:

'<input type="button" onClick="gotoNode(' + result.name + ')" />'

com resultado.name, por exemplo, igual a string "Add". Quando clico neste botão, tenho um erro que diz que Adicionar não está definido. Como esta chamada de função funciona perfeitamente com um parâmetro numérico, assumo que tem algo a ver com os símbolos "" na string. Alguém já teve este problema antes?

Solução

Parece que você'está construindo elementos DOM a partir de cordas. Você só precisa adicionar algumas citações em torno de result.name:

'<input type="button" onClick="gotoNode(\'' + result.name + '\')" />'

Mas devias estar a fazer isto com métodos DOM apropriados.

var inputElement = document.createElement('input');
inputElement.type = "button"
inputElement.addEventListener('click', function(){
    gotoNode(result.name);
});

​document.body.appendChild(inputElement);​

Apenas esteja ciente de que se isto for um loop ou algo assim, o 'resultado' mudará antes do evento disparar e você'precisaria criar uma bolha de escopo adicional para sombrear a variável que muda.

Comentários (11)

Eu sugiro nem mesmo utilizar manipuladores de HTML onclick, e utilizar algo mais comum como document.getElementById.

HTML:

<input type="button" id="nodeGoto" />

JavaScript:

document.getElementById("nodeGoto").addEventListener("click", function() {
    gotoNode(result.name);
}, false);
Comentários (6)

Editado: Se o requisito é fazer referência ao objeto global (js) no seu código HTML, você pode tentar isto. [Don' não use aspas (' ou ") em torno da variável].

[Fiddle][1] referência.

Javascript:

var result = {name: 'hello'};
function gotoNode(name) {
    alert(name);
}

HTML:

<input value="Hello" type="button" onClick="gotoNode(result.name)" />​
Comentários (5)