0

そのため、ユーザーがボタンを押して新しい入力 (数字、テキストなど) を生成するデータ入力プログラムを作成しています。終了すると、リストは通常​​ 100 ~ 10000 項目になります。

プログラムは順調に進んでいますが、現在、入力されたデータの 1 つのセットが配列 [1,2, . . .] これは後のデータ セットの一部です。

私が行ったことは、以前の入力に基づいた ID でボタンをセットアップすることです。(データ セット全体が JSON として保存されます)

そして、私がやりたいのは、ボタンが押されたときに押されたように見え、後で読み取られて JSON に保存されるボタンの ID を HTML 要素に書き込むことです。

私の問題は、正しい情報をユーザーに返すことに集中しています。

function doStuff(container){
    for (var u = 0, c = someJSON.length; u < c; u++){
            var someButton = document.createElement('button');      
            someButton.id = someJSON.id;
            someButton.className = 'someButton';
            someButton.onclick = function() {
                writeIDToHTML(container,someButton,someButton.id);
            }
            container.appendChild(someButton);
    }
}

function writeIDToHTML(container,theButton,theID){
        console.log("theID")
        console.dir(theID)
}

これにより、ループ内の最後の ID のみが出力されます。各ボタンの各 ID を取得するにはどうすればよいですか?

もう 1 つは、ボタンが押されたように見えるようにすることです。

リバーシブルならボーナスポイント。

4

1 に答える 1

0

各要素にリスナーを追加しないでください。その方法は、コンテナにリスナーを追加し、クリックされたイベントの ID を (event.target 経由で) 取得することです。これは、イベント委任と呼ばれます。

私はそれを説明することができましたが、この人たちはあなたの質問に完璧に答えました: http://davidwalsh.name/event-delegate

ところで、jquery などのライブラリを使用して DOM を操作することを検討する必要があります。イベント委任と高度なクロス ブラウザー DOM 操作ユーティリティを実装します。たとえば、メソッドによってアクセスできるため、「コンテナ」プロパティを追加する必要はありませんparent()

于 2013-07-01T15:03:26.890 に答える