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