0

私は Javascript でカード ゲームを作成しています。Web ページで行うことの 1 つは、クリックしてカードを使用するカードの名前のボタンを作成することです。少なくとも、理論的には。

コード:

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 であり、表示される名前とは異なる場合があります)。代わりに、'name' を引数として useCard を使用していますが、これは明らかに間違っています。ここで正しいコード行は何ですか?

4

4 に答える 4

3

イベントリスナーを追加すると、より適切でクリーンなオプションになります。

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 フレームワークを既に使用している場合は、それらのリスナー システムを使用してください。それらは自動的に互換性を追加します。

于 2013-10-03T19:58:41.173 に答える
1

これを置き換えます:

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 ); });
}
于 2013-10-03T19:59:30.093 に答える
0

これを試して:

 newbutton.setAttribute("onclick",'useCard("' + card.name + '")');
于 2013-10-03T19:58:29.643 に答える
0

これを使って

 newbutton.setAttribute("onclick",'useCard('+card.name+')'); 

代わりに

 newbutton.setAttribute("onclick",'useCard(name)'); 
于 2013-10-03T20:00:16.920 に答える