2017-05-23 52 views
-2

這是我的代碼:定義一個全局變量,但Chrome的控制檯返回undefined

jQuery(function ($){ 
    var player = $('#player'); 
    var time = 0; 

    function setCookie(cname, cvalue, exdays) { 
     var d = new Date(); 
     d.setTime(d.getTime() + (exdays*24*60*60*1000)); 
     var expires = "expires="+ d.toUTCString(); 
     document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; 
    } 

    player.bind('pause', function(){ 
     console.log('player was paused'); 
     console.log(player.currentTime); 
     setCookie("time", player.currentTime, 2) 
    }); 
}); 

我聲明兩個變量(一個對象和一個數字)。對象player被正確定義,但是當我嘗試呼叫time時,控制檯返回未定義狀態。

+2

那些不是全球性的;他們的作用範圍是他們所在的功能。 –

+2

你永遠不會記錄*時間* –

+0

當你將它記錄在上面的代碼中時(你沒有,你記錄'player.currentTime'可能沒有意義,因爲'player'是一個jQuery選擇器的結果 –

回答

-1

你可能真的把它定義爲全局的嗎?

jQuery(function ($){ 
var player = $('#player'); 
window.time = 0; 

function setCookie(cname, cvalue, exdays) { 
    var d = new Date(); 
    d.setTime(d.getTime() + (exdays*24*60*60*1000)); 
    var expires = "expires="+ d.toUTCString(); 
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; 
    } 

player.bind('pause', function(){ 
    console.log('player was paused'); 
    console.log(player.currentTime);//what should curentTime be? 
    setCookie("time", player.currentTime, 2); 
    window.time=player.currentTime;//an example 
}); 
}); 

現在真的是全球...

//in the console 
console.log(time); 
+0

我真的很感激不明原因的downvotes;) –

0

您還沒有聲明的全局變量。這兩個值在全局範圍內都是未定義的。要擁有全球範圍,您可以像這樣定義。

var player = $('#player'); 
var time = 0; 
jQuery(function ($){ 
    function setCookie(cname, cvalue, exdays) { 
     var d = new Date(); 
     d.setTime(d.getTime() + (exdays*24*60*60*1000)); 
     var expires = "expires="+ d.toUTCString(); 
     document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; 
    } 

    player.bind('pause', function(){ 
     console.log('player was paused'); 
     console.log(player.currentTime); 
     setCookie("time", player.currentTime, 2) 
    }); 
}); 
+0

雖然你可能不希望'player'被捕獲到DOMReady之外。 –

+0

@DaveNewton這是正確的。在這種情況下,變量'player'可以在全局範圍內聲明並在DOMReady中定義 –