2014-09-30 64 views
1

我試圖找回裏面另一個函數的結果,但總是得到未定義內訪問:函數結果不確定時,另一個函數

$(window).load(function() { 

    var isMobile = false; 
     function check_OS() { 

     if (/(iPhone|iPod|iPad)/i.test(navigator.userAgent)) { 
      isMobile = true; 
     } 
     } 

    check_OS(); 


$(window).resize(function() { 
    resizeImage(); 
}); 


function resizeImage() { 
     console.log(isMobile) 
} 

}); 

isMobile的該功能resizeImage內()的結果總是。未定義的,我不知道爲什麼:(

可以在這裏看到:

http://machinas.com/wip/hugoboss/responsive-template/test/

+0

移動函數聲明和isMobile變量out window.load的。並嘗試避免原始大小調整功能,當你有更多的onResize事件時,它會滯後你的頁面,當有人調整瀏覽器窗口的大小時,用鼠標拖動它。使用延遲調整大小。也可用於('調整')/ on('load')。 – patrykf 2014-09-30 09:10:02

+0

因爲'var isMobile = false;'是在另一個範圍內定義的,所以它在您嘗試訪問它的地方不可用。您的代碼與演示中的代碼不一樣。 – dfsq 2014-09-30 09:10:25

+0

這就是javascript的工作原理。 isMobile只能通過$(window).load函數(){}訪問。 您可能想了解更多關於j [avascript closures](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Closures) – jao 2014-09-30 09:10:28

回答

0

http://jsfiddle.net/6jL64ave/2/ 移動這些元素:

var isMobile = false; 
$(window).resize(function() { 
    resizeImage(); 
     console.log('wow') 
}); 
function resizeImage() { 
     console.log(isMobile) 
     console.log('wow') 
} 

外部窗口加載功能

相關問題