2

私が取り組んでいる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")」が「未定義」を返すのはなぜですか? ちょうど 1 か月前、この 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") が以前に正常に割り当てられていた場合、「未定義」であってはならないと思います。わかりますか - 何が問題なのですか?

4

1 に答える 1

0

コメントで、ドット '.' があることを確認しました。オブジェクトIDで。この構文を使用してその要素を選択することもできます: Let id be'abc.456' セレクターは$("[id='abc.456']")

私の答えがお役に立てば幸いです。

于 2012-09-05T21:04:57.720 に答える