2012-07-22 68 views
0

我需要創建一個倒計時腳本讀取XML文件的截止日期,解析XML和JavaScript函數問題

XML文件:

<?xml version="1.0" ?> 
<Imskia ID="Ramadan2012"> 
<day date="2012, 7 - 1, 23"> 
    <Fagr>3:26</Fagr> 
    <Shrok>5:22</Shrok> 
    <Dohr>12:02</Dohr> 
    <Asr>3:38</Asr> 
    <Maghrb>6:57</Maghrb> 
    <Ishaa>8:27</Ishaa> 
</day> 
<day date="2012, 7 - 1, 24"> 
    <Fagr>3:26</Fagr> 
    <Shrok>5:22</Shrok> 
    <Dohr>12:02</Dohr> 
    <Asr>3:38</Asr> 
    <Maghrb>6:59</Maghrb> 
    <Ishaa>8:27</Ishaa> 
</day> 
</Imskia> 

這裏的javascipt的HTML文件:

$(document).ready(function(){ 
    $.get('test.xml', function(d){ 
    $(d).find('day').each(function(){ 

     var $day = $(this); 
     var date = $day.attr("date"); 
     var Maghrb = $day.find('Maghrb').text(); 

     $('body').append($(html)); 

    //countdown 
    $('#defaultCountdown').countdown({ 
     until: new Date(date), timezone: +2 
    });    

    }); 
}); 


}); 

的問題是,倒計時腳本無法讀取變量存儲從XML文件中的日期,但手動把它時,下面正常工作:

//countdown 
    $('#defaultCountdown').countdown({ 
     until: new Date(2012, 7 - 1, 24), timezone: +2 
    });  
+0

該日期字符串將被解釋爲一個字符串,它不是JavaScript將識別的日期格式。也許你可以在你的''元素上有3個屬性的日期,一個爲年,一個爲月,一天爲一個。然後你可以將這些字符串轉換爲數字並使用3參數的構造函數。 – Pointy 2012-07-22 12:18:30

回答

1

當你

var date = $day.attr("date"); 

date持有一個字符串("2012, 7 - 1, 23"對於第一種情況)。你需要做的是以某種方式將這個字符串文字轉換成一個JavaScript對象。如果你可以在不月份部分減法做(即讓你的日期字符串作爲"2012, 6, 23",那麼最簡單的方法來獲得日期將

// split along the commas to get an array 
var dateComponents = $day.attr("date").split(', '); 
var date = new Date(dateComponents[0], dateComponents[1], dateComponents[2]); 

注意,第二個參數new Date()(一個月分量)是0索引因此一月份爲0,十二月份爲11

而且你可以倒計時改變

$('#defaultCountdown').countdown({ 
    until: date, timezone: +2 
});    

但是,如果更改日期的格式不一個選項eval應該可以幫助您將減法字符串轉換爲其實際值。在這種情況下,代碼將爲

// split along the commas to get an array 
var dateComponents = $day.attr("date").split(', '); 
var date = new Date(dateComponents[0], eval(dateComponents[1]), dateComponents[2]); 
+0

順便說一句,如果你決定這樣做,請閱讀[這個答案](http://stackoverflow.com/a/198031/342886)關於'eval'。 – spinningarrow 2012-07-22 13:25:55

+0

我用你的方法,一切都會好的,但我仍然需要修復代碼中的最後一個問題。 如果你檢討我的問題,你會在xml文件中找到這個' 6:57'這個存儲時間,我需要添加這個日期後顯示datetime這樣的格式2012 7 23 6:56:00 – ahmedsaber111 2012-07-22 15:23:22

+0

我修正了你在上面提到的:)謝謝 – ahmedsaber111 2012-07-22 15:32:25