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
我该如何解决这个问题?
答案 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属性,如上面的链接所示。