2017-08-07 32 views
0

我有4個函數用相應的選項調用Swiper滑塊。將這些附加到正確的div後,然後添加將它們鏈接在一起的代碼,以便一個滑塊控制另一個,反之亦然。無法定位Swiper滑塊變量,因爲它們是在函數內部定義的

我收到錯誤「Uncaught ReferenceError:swiperV2 is not defined」。我認爲這是因爲他們在每個功能中,而這個對他們的引用並不能「看到」他們。

有關如何解決此問題的任何想法?

感謝

$(".swiper-container-v").each(function(index, element) { 
    var $this = $(this); 
    $this.addClass("instance-" + index); 
    $this.find(".swiper-button-prev").addClass("btn-prev-" + index); 
    $this.find(".swiper-button-next").addClass("btn-next-" + index); 
    var swiperV = new Swiper(".swiper-container-v.instance-" + index, { 
     // your settings ... 
     pagination: '.swiper-pagination-v', 
     paginationClickable: true, 
     direction: 'vertical', 
     spaceBetween: 0, 
     mousewheelControl: false, 
     speed: 600, 
     nextButton: ".btn-next-" + index, 
     prevButton: ".btn-prev-" + index 
    }); 
}); 

$(".swiper-container-h").each(function(index, element) { 
    var $this = $(this); 
    $this.addClass("instance-" + index); 
    $this.find(".swiper-button-prev").addClass("btn-prev-" + index); 
    $this.find(".swiper-button-next").addClass("btn-next-" + index); 
    var swiperH = new Swiper(".swiper-container-h.instance-" + index, { 
    // your settings ... 
    pagination: '.swiper-pagination-h', 
    paginationClickable: true, 
    spaceBetween: 0, 
    parallax: true, 
    speed: 600, 
    nextButton: ".btn-next-" + index, 
    prevButton: ".btn-prev-" + index 
    }); 
}); 



$(".swiper-container-v2").each(function(index, element) { 
    var $this = $(this); 
    $this.addClass("instance-" + index); 
    $this.find(".swiper-button-prev").addClass("btn-prev-" + index); 
    $this.find(".swiper-button-next").addClass("btn-next-" + index); 
    var swiperV2 = new Swiper(".swiper-container-v2.instance-" + index, { 
    // your settings ... 
    paginationClickable: true, 
    direction: 'vertical', 
    spaceBetween: 0, 
    mousewheelControl: false, 
    speed: 600 
    }); 
}); 


$(".swiper-container-h2").each(function(index, element) { 
    var $this = $(this); 
    $this.addClass("instance-" + index); 
    $this.find(".swiper-button-prev").addClass("btn-prev-" + index); 
    $this.find(".swiper-button-next").addClass("btn-next-" + index); 
    var swiperH2 = new Swiper(".swiper-container-h2.instance-" + index, { 
    // your settings ... 
    paginationClickable: true, 
    spaceBetween: 0, 
    parallax: true, 
    speed: 600 
    }); 
}); 

swiperV2.params.control = swiperV; 
swiperH2.params.control = swiperH; 
swiperV.params.control = swiperV2; 
swiperH.params.control = swiperH2; 
+0

我編輯了你的代碼......也許它只是複製/粘貼在時髦的,但只是想指出,你不應該混合標籤/空格,你應該正確縮進你的代碼,如果你還沒有。有時當我們的代碼沒有完整組織時,很容易錯過顯而易見的東西。無論如何,當你尋求幫助時,你也應該以清晰的格式展示你的代碼。 –

回答

0

真的....這只是範圍是如何工作的,並且是爲基於類/函數的所有編程語言的幾乎無處不在。

爲了能夠訪問屬於函數範圍內的變量,必須在預期作用於該函數的範圍內爲該函數之外的該函數創建一個引用。

所以在情況下你有什麼事情,例如,

func() { 
    var myVar = ... 
} 

print(myVar) 

這不會因爲存在的職能範圍之外的全球範圍內的工作沒有myVar的是什麼概念。

所以你需要先創建一個對該變量的引用。

var myVar; 

func() { 
    var myVar = ... 
} 

print(myVar) 

現在,由於myVar是在函數範圍之外生成的,函數知道myVar。

或者,您可以返回myVar的值並執行此類操作。

func() { 
    return myVar = ... 
} 

var myFunc = func(); 

print(myFunc()) 

而且你必須基本上執行的功能分配(即,分配該函數的變量)在這種情況下,並且這個變量由代理存儲函數的返回值。

相關問題