我正在使用完整日历,当我们点击下个月/年时,所有表格的td字段都会刷新。
刷新所有数据后,我还希望onClick
也能获得新数据。
刷新的代码在
之下 function updateCells(firstTime) {
//alert('called');
var startYear = t.start.getFullYear();
var today = clearTime(new Date());
var cell;
var date;
var row;
subTables.each(function(i, _sub){
var d = cloneDate(t.start);
d.setFullYear(d.getFullYear(),i,1);
d.setFullYear(d.getFullYear(),i,1-d.getDay());
$(_sub).find('td').each(function(ii, _cell) {
cell = $(_cell);
if (d.getMonth() == i) {
cell.removeClass('fc-other-month');
}else{
cell.addClass('fc-other-month');
}
if (+d == +today && d.getMonth() == i) {
cell.addClass(tm + '-state-highlight fc-today');
}else{
cell.removeClass(tm + '-state-highlight fc-today');
}
cell.find('div.fc-day-number').text(d.getDate());
cell.find('div.fc-day-number').setAttribute('onClick','clicked("' + d.getDate() + '"');
//document.getElementsByTagName('div.fc-day-number').setAttribute('onClick','clicked("' + d.getDate() + '"');
addDays(d, 1);
});
});
bodyRows.filter('.fc-year-have-event').removeClass('fc-year-have-event');
}
错误是
TypeError: document.getElementsByTagName(...).setAttribute is not a function
有人知道如何在onClick事件中设置新数据。
答案 0 :(得分:2)
getElementsByTagName()
函数返回一个NodeList,它是节点的集合,因此您需要迭代它并分别对每个节点进行操作。
var nodes = document.getElementsByTagName(...);
for(var i = 0; i < nodes.length; i++) {
var node = nodes[i];
node.setAttribute(...);
}
虽然我不相信该功能是设计或打算使用完整选择器,但只有标签名称(所以'div'
而非'div.fc-day-number'
)。
相反,你可以这样做:
cell.find('div.fc-day-number').off('click').click(function(e) {
clicked(d.getDate());
});
答案 1 :(得分:1)
var i = 0;
$(_sub).find('td').each(function(ii, _cell) {
document.getElementsByTagName('div.fc-day-number')[i].setAttribute('onClick','clicked("' + d.getDate() + '"');
i++;
});
.each()也是一个循环,你只需要声明一个变量和增量。