Bir Onclick işlevine bir parametre (yani bir dize) iletmek istiyorum. Şu an için bunu yapıyorum:
'<input type="button" onClick="gotoNode(' + result.name + ')" />'
result.name örneğin "Add" dizesine eşit olacak şekilde. Bu düğmeye tıkladığımda, Add'in tanımlanmadığını söyleyen bir hata alıyorum. Bu fonksiyon çağrısı sayısal bir parametre ile mükemmel çalıştığından, bunun dizedeki "" sembolleriyle bir ilgisi olduğunu varsayıyorum. Daha önce bu sorunu yaşayan oldu mu?
Görünüşe göre DOM öğelerini dizelerden oluşturuyorsunuz. Sadece result.name'in etrafına bazı tırnak işaretleri eklemeniz gerekiyor:
'<input type="button" onClick="gotoNode(\'' + result.name + '\')" />'
Yine de bunu gerçekten uygun DOM yöntemleriyle yapmalısınız.
var inputElement = document.createElement('input');
inputElement.type = "button"
inputElement.addEventListener('click', function(){
gotoNode(result.name);
});
document.body.appendChild(inputElement);
Bu bir döngü ya da başka bir şeyse, result
olay gerçekleşmeden önce değişecektir ve değişen değişkeni gölgelemek için ek bir kapsam balonu oluşturmanız gerekecektir.
HTML onclick
işleyicilerini bile kullanmamanızı ve document.getElementById
gibi daha yaygın bir şey kullanmanızı öneririm.
HTML:
<input type="button" id="nodeGoto" />
JavaScript:
document.getElementById("nodeGoto").addEventListener("click", function() {
gotoNode(result.name);
}, false);
Düzenlendi: Eğer gereksinim HTML kodunuzda global nesneye (js) referans vermekse, bunu deneyebilirsiniz. [Değişkenin etrafında herhangi bir tırnak işareti (' veya ") kullanmayın]
[Fiddle][1] referans.
Javascript:
var result = {name: 'hello'};
function gotoNode(name) {
alert(name);
}
HTML:
<input value="Hello" type="button" onClick="gotoNode(result.name)" />