2015-11-10 50 views
0

在JavaScript(createJS)中爲Flash Canvas HTML5進行簡單的倒計時,並且出現以下錯誤:file_Canvas.js:318 Uncaught TypeError: Cannot read property 'dtxt_days' of undefined。 ?(錯誤是特定於線this.mc_counter.dtxt_days.text = days;及以下的3Javascript中的倒計時鐘定時器Flash Canvas HTML5

我在做什麼錯

這裏的JS:

this.mc_counter.dtxt_days.text = ""; 
this.mc_counter.dtxt_hours.text = ""; 
this.mc_counter.dtxt_mins.text = ""; 
this.mc_counter.dtxt_secs.text = ""; 

var end = new Date('10/19/2015 10:1 AM'); 

var _second = 1000; 
var _minute = _second * 60; 
var _hour = _minute * 60; 
var _day = _hour * 24; 
var timer; 

function showRemaining() { 
    var now = new Date(); 
    var distance = end - now; 

    this.days = Math.floor(distance/_day); 
    this.hours = Math.floor((distance % _day)/_hour); 
    this.minutes = Math.floor((distance % _hour)/_minute); 
    this.seconds = Math.floor((distance % _minute)/_second); 

    this.mc_counter.dtxt_days.text = days; 
    this.mc_counter.dtxt_hours.text = hours; 
    this.mc_counter.dtxt_mins.text = minutes; 
    this.mc_counter.dtxt_secs.text = seconds; 
} 


timer = setInterval(showRemaining, 1000); 

console.log(timer); 
+0

可以將所有代碼粘貼到某處。 – atilkan

+0

如果設置正確,請檢查dtxt_days。 – atilkan

+0

謝謝,dtxt_days工作,並填充給定的數字,如果我做'this.mc_counter.dtxt_days.text = 38;' –

回答

1

你在線路分配中的變量有錯誤的東西代碼不存在。

this.days != days 

相反,要確保你得到你只是分配給this屬性。

this.mc_counter.dtxt_days.text = this.days; 
this.mc_counter.dtxt_hours.text = this.hours; 
this.mc_counter.dtxt_mins.text = this.minutes; 
this.mc_counter.dtxt_secs.text = this.seconds; 

此外 - this並不是指您認爲它的作用。由於showRemaining是一個函數,因此它內部代碼中的this實際上是指showRemaining。有幾種方法可以解決這個問題。這裏可以說是最簡單的一個:

var self = this; 
function showRemaining() { 
    self.days = ... 
    self.mc_counter.dtxt_days.txt = ... 
} 

只會儲存到外this的參考。或者,你可以做到以下幾點:

timer = setInterval(showRemaining.call(this), 1000); 

在裏面有showRemainingthis分配給外this

+0

謝謝。這不是答案,它不起作用。'this.mc_counter.dtxt_days.text'由於某種原因在函數內部不起作用。當我做'this.mc_counter.dtxt_days.text =「100」;'我的文本框填充,當我做'this.days = 10; 函數showRemaining(){ \t this.mc_counter.dtxt_days.text = this.days; } showRemaining();'我得到的錯誤'未捕獲的TypeError:無法讀取屬性'dtxt_days'的undefined' :( –

+1

更新了我的答案@AgentZebra。應該修復它。:) – Harangue

+0

...謝謝!!! –