passare un parametro stringa in una funzione onclick

Vorrei passare un parametro (cioè una stringa) a una funzione Onclick. Per il momento, faccio così:

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

con result.name per esempio uguale alla stringa "Add". Quando clicco su questo pulsante, ho un errore che dice che Add non è definito. Poiché questa functioncall funziona perfettamente con un parametro numerico, presumo che abbia qualcosa a che fare con i simboli "" nella stringa. Qualcuno ha già avuto questo problema?

Soluzione

Sembra che tu stia costruendo elementi DOM da stringhe. Hai solo bisogno di aggiungere alcune virgolette intorno a result.name:

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

Dovresti davvero farlo con metodi DOM appropriati.

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

​document.body.appendChild(inputElement);​

Basta essere consapevoli che se questo è un ciclo o qualcosa del genere, result cambierà prima che l'evento scatti e avrete bisogno di creare un'ulteriore bolla di scope per ombreggiare la variabile che cambia.

Commentari (11)

Suggerisco di non usare nemmeno i gestori HTML onclick e di usare qualcosa di più comune come document.getElementById.

HTML:

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

JavaScript:

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

Modificato: Se il requisito è fare riferimento all'oggetto globale (js) nel tuo codice HTML, puoi provare questo. [Non usare le virgolette (' o ") intorno alla variabile.]

[Fiddle][1] riferimento.

Javascript:

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

HTML:

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