2

ユーザー入力に応じて複数のボタンを生成するコードに取り組んでいます

    for(var loop = 0; loop < up.length ; loop++){
document.write('<button style="background-color:'+ up[loop] +';width:100;height:100" </button>');

}

ただし、すべてのボタンに同じ onclick 関数を使用したいのですが、以下のように使用すると、関数が実行されません。何が問題で、どこが間違っているのでしょうか? 助けてください。

document.write('<button style="background-color:'+ up[loop] +';width:100;height:100" onclick= "myfn()" </button>');
4

3 に答える 3

1

タイプミス、開始タグを閉じていません:

 document.write('<button style="background-color:'+ up[loop] +';width:100;height:100" onclick="myfn()"></button>');

必ず W3c マークアップ検証サービス ( http://validator.w3.org ) で検証してください。

イベント ハンドラーを目立たないようにアタッチすることも調査する必要があります。ハンドラーをインラインで記述することは理想的ではありません。

于 2013-11-14T19:56:34.903 に答える
0
  1. jQuery を使用する
  2. ボタンにクラスを追加します (常に同じクラス)
  3. クリックを処理するユーザー jQuery のクリック メソッド

$('.クラス名).click(関数() { alert("クリック"); });

于 2013-11-14T19:58:07.477 に答える
0

次のようなものはどうですか (jquery も document.write も必要ありません):

var button;
for (i=0; i<5; i++) {
    button = document.createElement('button');
    button.innerHTML = "button - " + i;
    button.addEventListener('click', myFn);
    document.body.appendChild(button);
}


function myFn() {
    alert('button clicked');
}

ここを参照してください:http://jsfiddle.net/yNFqy/1/

于 2013-11-14T20:00:37.000 に答える