Ik wil graag een parameter (d.w.z. een string) doorgeven aan een Onclick functie. Op dit moment doe ik dit:
'<input type="button" onClick="gotoNode(' + result.name + ')" />'
met result.name bijvoorbeeld gelijk aan string "Add". Wanneer ik op deze knop klik, krijg ik een fout die zegt dat Add niet gedefinieerd is. Aangezien deze functioncall perfect werkt met een numerieke parameter, neem ik aan dat het iets te maken heeft met de symbolen "" in de string. Heeft iemand dit probleem eerder gehad?
Het lijkt erop dat je DOM elementen bouwt van strings. Je hoeft alleen maar wat aanhalingstekens toe te voegen rond result.name:
'<input type="button" onClick="gotoNode(\'' + result.name + '\')" />'
Je zou dit echt moeten doen met de juiste DOM methodes.
var inputElement = document.createElement('input');
inputElement.type = "button"
inputElement.addEventListener('click', function(){
gotoNode(result.name);
});
document.body.appendChild(inputElement);
Wees je er alleen van bewust dat als dit een lus of iets dergelijks is, result
zal veranderen voordat de gebeurtenis afgaat en je'zou een extra scope bubble moeten maken om de veranderende variabele te schaduwen.
Ik stel voor om zelfs geen HTML onclick
handlers te gebruiken, en iets meer algemeen zoals document.getElementById
.
HTML:
<input type="button" id="nodeGoto" />
JavaScript:
document.getElementById("nodeGoto").addEventListener("click", function() {
gotoNode(result.name);
}, false);
Bewerkt: Als de eis is om naar het globale object (js) te verwijzen in je HTML code, kun je dit proberen. [Gebruik geen aanhalingstekens (' of ") rond de variabele].
[Fiddle][1] verwijzing.
Javascript:
var result = {name: 'hello'};
function gotoNode(name) {
alert(name);
}
HTML:
<input value="Hello" type="button" onClick="gotoNode(result.name)" />