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?
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.
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);
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)" />