przekazać parametr łańcuchowy w funkcji onclick

Chciałbym przekazać parametr (np. ciąg znaków) do funkcji Onclick. Na razie robię to w ten sposób:

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

z result.name na przykład równym ciągowi "Add". Kiedy klikam na ten przycisk, mam błąd, który mówi, że Add nie jest zdefiniowany. Ponieważ to wywołanie funkcji działa idealnie z parametrem numerycznym, zakładam, że ma to coś wspólnego z symbolami "" w łańcuchu. Czy ktoś miał już ten problem?

Rozwiązanie

Wygląda na to, że'budujesz elementy DOM z ciągów znaków. Musisz tylko dodać kilka cudzysłowów wokół result.name:

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

Powinieneś jednak robić to za pomocą odpowiednich metod DOM.

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

​document.body.appendChild(inputElement);​

Należy pamiętać, że jeśli jest to pętla lub coś w tym stylu, result zmieni się przed wystrzeleniem zdarzenia i trzeba będzie utworzyć dodatkowy bąbel zakresu, aby ocienić zmieniającą się zmienną.

Komentarze (11)

Sugeruję nawet nie używać HTML onclick handlers, i użyć czegoś bardziej powszechnego, takiego jak document.getElementById.

HTML:

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

JavaScript:

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

Edytowane: Jeśli wymaganie polega na odwołaniu się do obiektu globalnego (js) w twoim kodzie HTML, możesz spróbować tego. [Don't używać żadnych cudzysłowów (' lub ") wokół zmiennej]

[Skrzypce][1] odniesienie.

Javascript:

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

HTML:

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