我只是在學習這些東西,所以請原諒我的代碼或問題是非常基本的。Javascript:DOM,appendChild - 幾個問題
我的「工作代碼」(沒有錯誤等),只是讓你知道我有這麼遠:
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」再次宣稱,第一個被覆蓋和第二個不顯示...
A)這是正確的方式嗎? (不知道這是正確的做法,我來了有關聲明另一個變量來得到它的工作的解決方案,但它似乎是多餘的代碼)
然後這行代碼:
strong.appendChild(document.createTextNode(the_type));
剛添加所有東西從在那裏循環:(
例如,對於()循環的第一次迭代的具有abc
和第二有def
它ABCDEF顯示,而不是ABC第一次和DEF的第二個。
B)爲什麼是這樣,我該如何解決它?
謝謝!
對於初學者,請學會正確縮進代碼。像WebStorm(或者甚至是jsFiddle)這樣的編輯器都有這樣的按鈕... –
所有那些位於for-loop頂部的變量應該被聲明......你正在污染全局命名空間。 –
給他休息一下 - 他說他在學習。 –