![](/img/trans.png)
[英]What is the purpose of testing if a React button successfully calls a function given to onClick?
[英]In Javascript - setting an onclick attribute for a button that calls a function with a given argument
我正在用Javascript制作紙牌游戲,網頁要做的一件事就是創建帶有您要使用的紙牌名稱的按鈕。 至少在理論上。
碼:
function addButton(card) {
var newbutton = document.createElement("input");
newbutton.setAttribute("type", button);
newbutton.setAttribute("id", 'someButton');
newbutton.setAttribute("value",card.displayName);
newbutton.setAttribute("name",card.name);
newbutton.setAttribute("onclick",'useCard(name)'); ///this is what's not working
我想要的是onclick屬性使用命名卡(卡的名稱為card.name,它可能與顯示的名稱不同)。 相反,它使用useCard以“ name”作為參數,這顯然是錯誤的。 這里正確的代碼行是什么?
添加事件監聽器將是一個更好,更干凈的選擇:
newbutton.addEventListener('click', function () {
useCard(this.getAttribute("name"));
});
如果確實需要支持IE <9,則必須首先檢查addEventListener
兼容性,並在不支持前者的情況下使用attachEvent
:
// generic helper function
function addEventListenerX(elem, evt, listener) {
if ("addEventListener" in window) {
elem.addEventListener(evt, listener);
}
else {
elem.attachEvent("on" + evt, listener);
}
}
addEventListenerX(newbutton, 'click', function () {
useCard(this.getAttribute("name"));
});
如果您已經在使用jQuery或原型之類的JS框架,請使用其偵聽器系統。 他們會自動為您添加兼容性。
替換為:
newbutton.setAttribute("onclick",'useCard(name)'); ///this is what's not working
有了這個:
if (newbutton.addEventListener) {
newbutton.addEventListener('click', function() { useCard( card.name ); });
else {
newbutton.attachEvent('onclick', function() { useCard( card.name ); });
}
嘗試這個:
newbutton.setAttribute("onclick",'useCard("' + card.name + '")');
用這個
newbutton.setAttribute("onclick",'useCard('+card.name+')');
代替
newbutton.setAttribute("onclick",'useCard(name)');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.