2011-08-26 7 views
6
function countDownRound() { 
    if(myRoundTimeRemaining >= 0){ 
     var secs = myRoundTimeRemaining; 
     if(secs < 10) 
     { 
      secs = "0" + secs; 
     } 
     $("#countdown").html(':'+secs); 
     CountdownTimer = setTimeout(countDownRound, 1000); 
     myRoundTimeRemaining--; 
    } 
    else{ 
     $("#countdown").html(''); 
    } 
} 

Đoạn mã trên không có gì mong đợi, trên Firefox. Mỗi giây một số giảm được hiển thị trong phần tử "đếm ngược".Đồng hồ đếm ngược không hiển thị ngay trên Chrome/Safari, nhưng OK trên Firefox

Trên Safari và Chrome, mã chạy đúng cách, nhưng phần tử trên màn hình không thay đổi. Nếu một cái gì đó khác xảy ra (chẳng hạn như thay đổi kích thước cửa sổ trình duyệt) các yếu tố cập nhật đúng trong khi.

Điều này giống như một số loại tối ưu hóa hoặc vấn đề dựa trên chuỗi, nhưng tôi không thể tìm thấy giải pháp.

+4

hoạt động tốt cho tôi trên chrome http://jsfiddle.net/br4uK/ –

+0

Hoạt động tốt cho tôi. Bạn đang sử dụng phiên bản Chrome và Safari nào? –

+0

Thú vị. Nó có thể có một cái gì đó làm với chồng hoạt hình của JQuery - Tôi thấy cảnh báo này: "Vì bản chất của requestAnimationFrame(), bạn không bao giờ nên xếp hình ảnh động bằng cách sử dụng một vòng lặp setInterval hoặc setTimeout." Mặc dù đối tượng này không hoạt ảnh, một số đối tượng khác của chúng tôi là ... –

Trả lời

0

Làm việc tốt cho tôi trên Chrome, Safari và Firefox.

Có lẽ trong trường hợp này bạn don `t cần phải sử dụng các thẻ html để hiển thị kết quả của bạn, text() có thể làm việc tốt hơn so với html().

Hãy thử sử dụng

$("#countdown").text(':'+secs); 

thay html().

OBS: Dường như một số trẻ em bất ổn trên hệ thống hoạt động của bạn cũng có thể ảnh hưởng đến hiển thị trình duyệt. Ai đó có thể vui lòng xác nhận hoặc từ chối điều này?