0

私はこのことを学んでいるところなので、私のコードや質問が非常に基本的なものである場合はご容赦ください。

私の「作業コード」(エラーなどなし)は、私がこれまでに何を持っているかを知っているだけです。

var t = document.createElement("table"),
    tr = document.createElement("tr"),
    tr2 = document.createElement("tr"),
    td = document.createElement("td"),
    td2 = document.createElement("td"),
    a = document.createElement("a"),
    strong = document.createElement("strong");

t.style.width = "80%";
t.style.border = "0";
t.cellspacing = "2";
t.cellpadding = "2";

for (var i = 0; i < nodes.length; i++) {
    the_table_color = nodes[i].getAttribute("table_color");
    the_type = nodes[i].getAttribute("type");
    alt_link = nodes[i].getAttribute("alt_link");
    link_for_deletion = nodes[i].getAttribute("link_for_deletion");
    comment = nodes[i].getAttribute("comment");

    tr.bgColor = the_table_color;
    t.appendChild(tr);

    td.width = "16%";
    td.vAlign = "top";
    tr.appendChild(td);

    strong.appendChild(document.createTextNode(the_type));
    td.appendChild(strong);

    td.width = "16%";
    td.vAlign = "top";
    tr.appendChild(td);

    td2.width = "70%";
    td2.vAlign = "top";
    tr.appendChild(td2);

    a.href = alt_link;
    a.appendChild(document.createTextNode(alt_link));
    a.target = "_blank";
    td2.appendChild(a);
}

上からわかるように、私はこのビットを持っています:

td = document.createElement("td"),
    td2 = document.createElement("td"),

その理由は、「td」を再度宣言しないと、最初の宣言が上書きされ、2番目の宣言が表示されないためです...
A)これは正しい方法ですか?(これが正しいアプローチであるかどうかはわかりませんが、それを機能させるために別の変数を宣言するという解決策を思いつきましたが、それは余分なコードのようです)

次に、このコード行:

strong.appendChild(document.createTextNode(the_type));

そこにループからすべてのものを追加するだけです:(
たとえば、for()ループの最初の反復では、最初にabcではなくabcdefが表示され、2番目にdefが表示されますabc。B )それはなぜですか。修正しますか?def

ありがとう!

4

1 に答える 1

2

forループは、反復ごとに同じインスタンスに対して実行されます。次のことを実行しない限り、複数行のデータを取得することはありません。

document.createElement("TR");
document.createElement("TD");

ループ本体内。そうでなければ、あなたは正確に正しいです、あなたはループの各反復で同じ行とテーブルセルに同じテキストを追加しているだけです。

アプローチを次のようなものに変更する必要があるようです。

var table = document.createElement("TABLE");
for(var i = 0; i < nodes.length; i++){
    var tr = document.createElement("TR");
    var td = document.createElement("TD");
    tr.appendChild(td);
    table.appendChild(tr);

    // do something to to td    
}

私があなたの質問を誤解したかどうか教えてください、しかしあなたがなぜあなたのテーブルが1つの行だけを構築しているのか、同じセルを繰り返し変更しているのか疑問に思っているなら、それは間違いなく理由です...あなたの質問にもっとあるなら私に知らせてください投稿を更新します。

ハッピーコーディング。

B

于 2011-07-30T15:46:59.113 に答える