解析XML和Javascript函数的问题

Parse XML and Javascript functions issue

本文关键字:问题 函数 Javascript XML 解析      更新时间:2024-01-24

我需要创建一个倒计时脚本,从XML文件中读取截止日期

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>

这里是HTML文件中的Javascipt:

$(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
    });     

进行时

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

date保存字符串文字(对于第一种情况为"2012, 7 - 1, 23")。您需要做的是以某种方式将这个字符串文字转换为JavaScriptDate对象。如果您可以在月份组件中不做减法(即,将日期字符串保持为"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索引,因此1月为0,12月为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]);