使用document.createElement()时,“字符串包含无效字符”

时间:2013-08-23 06:38:52

标签: javascript

var NewRow = document.createElement("<tr><td align='left' valign='top'  width='9%;'  ><img width='32px' height='32px' src='images/" + ProfilePic + "'  /></td><td align='left' valign='Top' ><span class='MsgSpan'>" + Msg + "</span></td><td align='right' align='left' valign='top' style='color:Gray;' >" + Date + "</td></tr>");

我收到错误:

InvalidCharacterError: String contains an invalid character

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:12)

您传递给document.createElement的字符串是元素的类型,例如tr

如果你真的想把你的HTML组合成一个大字符串,我想你可以写:

var newRow = document.createElement('tr');
newRow.innerHTML = "<td align='left' valign='top'  width='9%;'  ><img width='32px' height='32px' src='images/" + ProfilePic + "'  /></td><td align='left' valign='Top' ><span class='MsgSpan'>" + Msg + "</span></td><td align='right' align='left' valign='top' style='color:Gray;' >" + Date + "</td>";

但它可能更清洁/更快/更安全地使用DOM操作。

答案 1 :(得分:1)

最近的答案会很好, 我在下面有一个类似的答案:在这里,我已经定义了元素,以便于更改和调试。

var ProfilePic = "abl.jpg";
var Msg="Hi";
var Date = "June 10, 2010";
function doit() {
   var NewRow ="<tr><td align='left' valign='top'  width='9px'  ><img width='32px' height='32px' src='images/" + ProfilePic + "'  /></td><td align='left' valign='Top' ><span class='MsgSpan'>" + Msg + "</span></td><td align='right' align='left' valign='top' style='color:Gray;' >" + Date + "</td></tr>";
   var element = document.getElementById("tbl_body");
   element.innerHTML +=NewRow;
}

这对我来说就像魅力一样..

上一代码的问题是createElement,您必须在其中创建行,然后td然后是文本然后追加。

我希望这样做..

答案 2 :(得分:0)


检查出来:

Creating a new DOM element from an HTML string using built-in DOM methods or prototype

您无法将HTML字符串传递给createElement方法,而是使用innerHTML属性,如上面的链接所示。