以下是我正在处理的某些HTML网页的Javascript代码:
var widgetsList = $("[widgetId]");
ToLogger("Init: " + widgetsList.length + " widgets found.");
for (var i=0; i<widgetsList.length; i++)
{
var widget = widgetsList[i];
var jqID = "#" + widget.id;
var refreshInterval = $(jqID).attr("refreshInterval");
if (refreshInterval == undefined)
refreshInterval = "30";
$(jqID).data("refreshCounter", "0");
var x = $(jqID).data("refreshCounter");
ToLogger(" = widget[ " + widget.id + " ].refreshCounter(init1) = " + x);
var widgetObj = $(jqID);
jQuery.data(widgetObj, "refreshCounter", "0");
x = jQuery.data(widgetObj, "refreshCounter");
ToLogger(" = widget[ " + widget.id + " ].refreshCounter(init2) = " + x);
}
但是在日志输出中我看到:
DashboardInit: 1 widgets found.
= widget[ Q.RecordCounters ].refreshInterval = 30
= widget[ Q.RecordCounters ].refreshCounter(init1) = undefined
= widget[ Q.RecordCounters ].refreshCounter(init2) = 0
为什么'$(jqID).data(“refreshCounter”)'返回'undefined'? 一个月前,这个javascript代码完全正常!现在可能出现什么问题? 我已经尝试过jQuery 1.7.2和1.8.1 - 以同样的方式工作。 可能是因为浏览器更新了? (Firefox 15.0)
下一个问题 - 即使jQuery.data(...)在定时器函数中也不起作用:
var timerLock = false;
function OnTimer()
{
if (timerLock) return ;
timerLock = true;
for (var i=0; i<widgetsList.length; i++)
{
var widget = widgetsList[i];
var jqID = "#" + widget.id;
var widgetObj = $(jqID);
var x = jQuery.data(widgetObj, "refreshCounter");
var counter = parseInt(x);
ToLogger(" = widget[ " + widget.id + " ].refreshCounter = " + x + " / " + counter);
}
}
但是在日志输出中我看到:
= widget[ Q.RecordCounters ].refreshCounter = undefined / NaN
为什么'未定义'?!如果之前成功分配了.data(“refreshCounter”),那么我认为它不能是'undefined'。 你看到了 - 它有什么问题吗?
答案 0 :(得分:0)
我在评论中看到你有一个点'。'在对象id中。您仍然可以使用以下语法选择该元素:
设id为'abc.456'
选择器将为$("[id='abc.456']")
我希望你能找到我的答案。