我正在尝试使用jQuery在表中创建div。该表表示每个<td>
的日历,其ID等于ISO格式的日期字符串。在下面的代码中,我遇到了追加行的问题。它没有向DOM添加任何内容。我已根据单元格的ID检查了tdID值,它们确实匹配。所以我很确定这不是问题。有人可以找到我可能出错的地方吗?
if (loopDate.between(past, future)) {
var tdID = loopDate.toISOString();
$("#" + tdID).append("<div class=" Event ">"
+ data.events[i].Est + "</div>");
}
编辑---这是我的html示例。 “d”是我添加到ID开头的字符,用于解决@Matt Stauffer提到的问题。
<td id="d2012-02-01T05:00:00.000Z">1</td>
答案 0 :(得分:3)
不要使用"
;你需要一个词汇"
您需要通过编写\"
来Javascript转义字符串文字。
答案 1 :(得分:2)
ID无法以数字开头,我相信ISO格式的日期会以数字开头,因此您使用的是无效ID。
另外,正如其他人提到的那样,
"<div class=" Event ">"
应该是
"<div class=\"Event\">"
答案 2 :(得分:2)
现在我看到了你的id,虽然它作为id属性的命名约定和HTML一样有效,其中:
ID和NAME令牌必须以字母([A-Za-z])开头,后面可以跟任意数量的字母,数字([0-9]),连字符(“ - ”),下划线(“ _“),冒号(”:“)和句号(”。“)。
你的情况下的问题是使用点(。)和冒号(。),就像使用jquery选择器时一样,点(。)被解释为searching for a class or subclass和冒号(:) as searching for :first, :last etc
要解决您的问题,您可以尝试将这些字符替换为不需要的字符(_)或连字符( - ),这应该没问题。
答案 3 :(得分:1)
您在追加功能中使用了转义的HTML实体,因此您需要更改:
"<div class=" Event ">"
为:
"<div class='event'>"...
// or
"<div class=\"event\">"...
答案 4 :(得分:1)
或者,您可以使用
var div = document.createElement('div');
$(div).addClass("Event");
$(div).append(data.events[i].Est);
$("#" + tdID).append(div);
- 更清洁的编码类型......
答案 5 :(得分:0)
if (loopDate.between(past, future)) {
var tdID = loopDate.toISOString();
var tdDiv = document.createElement('div');
tdDiv.addClass("Event");
tdDiv.html(data.events[i].Est);
$("#" + tdID).html(tdDiv);
}