Javascript,再添加一个元素......

时间:2011-07-29 03:12:36

标签: javascript elements

我正在学习这些东西,所以这是我最简单的脚本:

var t  = document.createElement("table"),
    tb = document.createElement("tbody"),
    tr = document.createElement("tr"),
    td = document.createElement("td");

    t.style.width = "100%";
    t.style.borderCollapse = 'collapse';
    t.border=1;



    // note the reverse order of adding child        
    tr.appendChild(td);
    tb.appendChild(tr);
    t.appendChild(tb);

   // more code to populate table rows and cells
   document.getElementById("theBlah").appendChild(t);
   alert(t);
   }

现在我想添加一些将在<td>中显示的内容,所以我想:

td.appendChild(document.createTextNode(title)); 

效果很好...... 但是如果title包含html,例如一个简单的粗体标记,那么Hello<b> name!</b> 我们该怎么做?

我认为我们为<b>创建了一个新元素但是......之后,我不知道该怎么做。 只是为了澄清,我希望最终结果是Hello<b> name!</b>最终会出现在TD标签中:

<td>Hello<b> name!</b></td>

请帮助!!

EDIT; 是的,我知道我可以通过InnerHTML来做到这一点,但我需要这样做才能让它超越Firefox AMO政策 对不起,早些时候应该提到这个......

4 个答案:

答案 0 :(得分:5)

请尝试使用td.innerHTML。这样您就可以毫无顾虑地将标记作为标记传递。

答案 1 :(得分:2)

您将innerHTML分配给要追加的元素。

td = document.createElement("td");
td.innerHTML = "<em>OMG!</em> I can has <strong>HTML<strong>!"
tr.appendChild(td);

答案 2 :(得分:1)

正如其他人提到的,你能做的最简单的事情是:

td.innerHTML = "Hello<b> name!</b>";

你也可以这样做:

var b = document.createElement('b');
b.appendChild(document.createTextNode(" name"));
td.appendChild(document.createTextNode("Hello"));
td.appendChild(b);

此外,您知道,<b>标记在技术上已被弃用。您应该使用<em><strong>代替。

答案 3 :(得分:1)

<强>尝试:

var td = document.createElement("td");
var b = document.createElement("b");
b.appendChild(document.createTextNode(" name!"));
td.appendChild(document.createTextNode("Hello"));
td.appendChild(b); 

结果:<td>Hello<b> name!</b></td>

示例:http://jsfiddle.net/hGF3e/