0
var cnt1 = 0;
function initOctoView(){
   var newcnt1 = printAdsBox1(cnt1, imgPerBox1); // first time on first load
   var totalBoxes8 = setInterval(function() {
      newcnt1 = printAdsBox1(newcnt1, imgPerBox1); // all 5 sec
   }, 5000);
}

この関数は次のように呼び出されます。

if($('.octoView').length > 0){
    initOctoView();
}

そして、これまでのところ正常に動作します。

後で私は持っています:

$(document).on('click', 'a.windowXL', function () {
   window.clearInterval(totalBoxes8);
}

しかし、これは totalBoxes8 が定義されていないことを返します。私の間違いは何ですか?ご意見をお聞かせください!

4

3 に答える 3

4

関数内で var を使用して totalBoxes8 を宣言します。totalBoxes8 は、この関数でのみアクセス可能なローカル変数です。グローバルにすることができます:

var cnt1 = 0;
var totalBoxes8;
function initOctoView(){
     var newcnt1 = printAdsBox1(cnt1, imgPerBox1); // first time on first load
     totalBoxes8 = setInterval(function() {
          newcnt1 = printAdsBox1(newcnt1, imgPerBox1); // all 5 sec
      }, 5000);
}
于 2013-05-17T17:16:36.460 に答える
0

これを試して;

$(function(){

    var cnt1 = 0, totalBoxes8 ;
    function initOctoView(){
       var newcnt1 = printAdsBox1(cnt1, imgPerBox1); // first time on first load
       totalBoxes8 = setInterval(function() {
          newcnt1 = printAdsBox1(newcnt1, imgPerBox1); // all 5 sec
       }, 5000);
    }

   $(document).on('click', 'a.windowXL', function () {
      window.clearInterval(totalBoxes8);
   }
});
于 2013-05-17T17:15:45.377 に答える
0

totalBoxes8これは、関数のスコープ内でローカルundefinedに宣言されているため、グローバルスコープでは使用できないためです。initCotoView()

グローバルオブジェクトに明示的にアタッチすることにより、関数からグローバルを宣言できwindowます。何かのようなもの:

function foo() {
  window.myVar = 1; // declares a global
} 

foo(); // call the function to actually make the declaration

console.log(window.myVar); // the variable is accessible globally
于 2013-05-17T17:15:56.397 に答える