0

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
    });     
4

1 に答える 1

1

あなたがするとき

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]);

(月コンポーネント)の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]);
于 2012-07-22T13:20:19.260 に答える