여기에 내가 일하고 있어요 일부 HTML 페이지에서 자바 스크립트 코드 :jQuery.data가 작동하지 않는 이유는 무엇입니까?
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 '를 반환합니까? 한달 전에 정확히이 자바 스크립트 코드가 제대로 작동했습니다! 지금은 무엇이 잘못 될 수 있습니까? jQuery 1.7.2와 1.8.1로 시도했습니다. 동일한 방식으로 작동합니다. 브라우저가 업데이트되어있을 수 있습니까? (파이어 폭스 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'가 아니어야한다고 가정합니다. 당신은 그것을 보았습니까 - 무엇이 잘못되었을 수 있습니까?
'$ (jqID)'가 단일 요소를 반환합니까? 그것을 테스트하기 위해'.last()'를 추가해볼 수있다. –
물론, $ (jqID)가 단일 요소 만 반환한다고 확신합니다. – user1250823
여기에 아무런 위법이 없으며, 실제로 이런 종류의 문제가 될 수 있습니다. –