2011-07-30 25 views
1

js関数を使用して、HTMLページにテーブルを追加しようとしています。
既存のテーブルからデータを削除する例がたくさんありましたが、これまで存在していなかった新しいテーブルを追加する例は見つかりませんでした。
私はテーブルのために必要なすべての情報を持つJavaScript変数を内部に持っていますが、今はそれを行う方法を見つける必要があります...私のvarがv1、v2、v3、v4であり、次の表:テーブル全体をJavaScriptコードで追加するには?

v1 v2 
v3 v4 

上記を実行する正しいコードは何ですか?

+2

'wrapper.innerHTML = '

​​' + V1 + '​​' + V2 + '​​' + V3 + '​​' + V4 + '
';' 'ここwrapper'テーブルを配置するDOM要素の参照です。行数/セル数が固定されていない場合は、HTML文字列を動的に作成する関数をお勧めします。 –

+1

あなたが見つけたサンプルを投稿してください。おそらくあなたがそれらの修正を手伝うことができます。 – Sparky

答えて

1

var tableElem = document.createElement('table')

+0

リンゴパイをゼロから作るには... –

4
var v1 = 'v1', 
    v2 = 'v2', 
    v3 = 'v3', 
    v4 = 'v4'; 

var table = document.createElement('table'); 

var row = table.insertRow(0); 
row.insertCell(0).innerHTML = v1; 
row.insertCell(1).innerHTML = v2; 

row = table.insertRow(1); 
row.insertCell(0).innerHTML = v3; 
row.insertCell(1).innerHTML = v4; 

document.body.appendChild(table); 

例でスタート:http://jsfiddle.net/XPpNF/1/

0

あなたはjQueryのを使用しているあなたはjQueryのを使用していない場合、それは

var awesomeTable = $("<table/>"); 
$("#parentElement").append(awesomeTable); 

var awesomeTr = $("<tr/>"); 
awesomeTable.append(awesomeTr); 

awesomeTr 
    .append($("<td/>", {html: v1})) 
    .append($("<td/>", {html: v2})) 
    .append($("<td/>", {html: v3})) 
    .append($("<td/>", {html: v4})); 

のようなものになるだろうと仮定すると、私は謙虚にあなたが完全にすべきだとお勧めします。

+0

テーブルを作成するだけでjQueryをロードできますか?残酷? – user113716

+0

あなたの投稿の元のバージョンのようにフォーマットされていたので、私は1行テーブルに行きましたが、任意の数の行に対して自分の答えを変更するのはかなり簡単です。もっと冗長になります。 –

+0

@patrickいいえ、もちろんです:)私は、jQueryが広く普及していることを意味しています。これは、OPがそれを使用しているか、いずれのプロジェクトでも多くのベースをカバーする95%のチャンスです。 –

0

ちょうどあなたのテーブルのHTMLコードを作成し、例えば既存のdivに追加します。

var html = "<table"; 
html += "<tr><td>v1</td><td>v2</td></tr>"; 
html += "<tr><td>v3</td><td>v4</td></tr>"; 
html += "</table>"; 
document.getElementById('idOfYourDiv').innerHTML = html; 

あなたはまたのdocument.createElement(テーブル)を使用して、テーブル内のすべての要素を作成するテーブルを構築することができますしかし、文字列を使用する最初の方法は高速です。

・ホープこれはあなたが(あなたが必要なもののためにも、そうでない場合は必須)あなたが作成したコードを追加するjQueryのを使用することができ

+0

document.createElementはテキストを要素に解析するよりもはるかに高速です。 – f0x

+0

私はDOMと対話し、すべてのelemntsを1つずつ作成すると思っていますが、それはCPUの方が速くはありません。とにかく、この方法で入力する方が速いです。 – wezzy

0

に役立ちます:パトリックによって与えられた

var table += <table> 
table += <tr> ... loop over your data variables to fill data ... 
table += </tr> 
table += </table> 
§("# your wished table-id").html(data); 

提案は確かに、よりエレガントです。これにより、それぞれの単一のタグを作成できるので、必要に応じて追加のスタイル属性を直接挿入することができます。

+1

これは有効なjavascriptの近くにありません – Dani

1

ここでの回答はたくさんあります。

BUT!一部のバージョンのInternet Explorerでは、作成された<table>要素の内容を変更できません。たとえば、いつもtableElement.appendChild(trElement)を使うことはできません。

しかし、innerHTMLを使用して、代わりにテーブルのhtmlコンテンツを置き換えることができます。

+1

IEに関する声明は広すぎます。あなたは確かにIEのテーブルの内容を変更することができます。 'innerHTML'をどこで使うことができるかに関していくつかの問題があります。 IEの「innerHTML」の実装に携わっていた男からの[こちらは興味深い記事です](http://www.ericvasilik.com/2006/07/code-karma.html) * "最初は、IEがinnerHTMLを使って変更されたテーブルの再描画を実行できないと思っていましたが、この制限に責任があることを思い出しました!" * – user113716

+1

@patrick dw:実際には広範で不正確でしたその周りには他の方法があります。私は、DOM操作に関してはテーブルが特別なケースであることに注意したいと思います。リンクをありがとう - 興味深い読書! – Flambino

関連する問題