setAttribute中的javascript onClick事件

时间:2013-01-21 12:38:59

标签: javascript jquery html fullcalendar

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

2 个答案:

答案 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()也是一个循环,你只需要声明一个变量和增量。

相关问题