2

テーブルを動的に生成したいので(行数)、HTMLで記述したテーブルをJavascriptに変換しようとしています。私が抱えている主な問題は、テーブル内の個々のセルがクリック可能であり、別のhtmlページを開くことです。残念ながら、htmlの「onclick」パラメータはステートメントでは機能しませんdocument.write。HTMLのテーブルセルの例を次に示します。

<td id="r1c1" align="center" onclick="getTicket(1,'plan',1);"><script language="JavaScript">document.write(getDate(1,"plan", "r1c1")); </script></td>

この行の関数は事前定義されて機能しているので、それらを投稿するつもりはありませんが、関数getTicket(..)は別のhtmlページを開くことを想定しています。

私の問題は、onclickをJavaScriptで機能させる方法です。document.writeコマンドを使用してJavascriptでセルを作成できますが、これらのセルをクリックして関数getTicket(..)を実行する方法がわかりません。

4

4 に答える 4

3

控えめに言っても、 Javascriptプログラミングのあなたのスタイルは古くからあります。document.write動的コンテンツを生成する一般的な方法がほとんどなかったときに主に開発された関数です。

したがって、のようなメソッドを使用して要素を動的に生成し、document.createElementそこにコンテンツを追加してから、のような最新のメソッドを使用して要素をDOMにアタッチする必要がありますappendChild

onclick次に、のような従来の方法よりも新しいものを使用して、イベントリスナーをアタッチできますaddEventListener。スニペットは次のとおりです。

var td = document.createElement("td");
td.innerHTML = getDate(1, "plan", "r1c1");
td.addEventListener("click", function() {
    getTicket(1, 'plan', 1);
});
row.appendChild(td);

これrowが、生成しているテーブルの行だと思います。

残念ながら、IE <9はと呼ばれる別の方法を使用するattachEventため、次のようになります。

td.attachEvent("onclick", function() { ...
于 2012-07-05T14:38:11.157 に答える
0

関数setAttribute(Attribute、Value)を使用して、HTMLの属性を変更できます。

この関数を使用すると、セルコードを生成し、属性を動的に定義できます。

于 2012-07-05T14:36:37.423 に答える
0

document.writeページに要素を追加するために使用しないでください。これにはjavascript関数があります。

var myCell = document.createElement('td');
myCell.setAttribute('id', 'r1c1');
myCell.setAttribute('align', 'center');
myCell.onclick = function () {
    getTicket(1, 'plan', 1);
};

// myRow is the 'tr' you want this 'td' to be a child of.
myRow.appendChild(myCell);

実際の動作をご覧ください:http://jsfiddle.net/teH7X/1/

于 2012-07-05T14:37:12.970 に答える
0

以下のコードを試してみてください。それが機能している場合は、より良いオプションを提供することをお知らせください。-

<script>
   document.onload = function()
   {
       document.getElementById('r1c1').onclick = function()
       {
           getTicket(1,'plan',1);
       }
   }
</script>

確認してお知らせください。

于 2012-07-05T14:38:13.473 に答える