0

我正在使用完整日历,当我们单击下个月/年时,所有表的 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 事件中设置新数据。

4

2 回答 2

2

getElementsByTagName()函数返回一个NodeList,它是节点的集合,因此您需要对其进行迭代并分别对每个节点执行操作。

var nodes = document.getElementsByTagName(...);
for(var i = 0; i < nodes.length; i++) {
    var node = nodes[i];
    node.setAttribute(...);
}

尽管我不相信该功能旨在或打算与完整的选择器一起使用,但只有标签名称(so'div'和 not 'div.fc-day-number')。

相反,您可以这样做:

cell.find('div.fc-day-number').off('click').click(function(e) {
   clicked(d.getDate());
});
于 2013-01-21T12:41:51.183 回答
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() 也是一个循环,您只需声明一个变量并递增。

于 2013-01-21T12:46:49.390 回答