2

私はこれを何時間も見つめていました、そして本当にいくつかの助けを使うことができました。私は映画館のウェブサイトの既存のコードを使用しています。以下は、今日からxmlファイルの最大日付までの範囲の日付で選択リストを埋める必要があります。

function populateSelect(xmlDoc, elSel) {
    var dmindate = new Date();
    var showings = xmlDoc.getElementsByTagName('Session');
    fmaxdate = "";
    for (var showing = 0; showing < showings.length; showing++) {
        if (retText(showings[showing].getElementsByTagName('Date_time')[0]) > fmaxdate) {
            fmaxdate=retText(showings[showing].getElementsByTagName('Date_time')[0]);//get the Max Date
        }
    }

    var dmaxdate = new Date.parseString(fmaxdate, "yyyyMMddHHmmss");
    while(dmindate <= dmaxdate){ //Fill in the Select List
        var elOptNew = document.createElement('option');
        elOptNew.text = dmindate.format("EE NNN d, yyyy");
        elOptNew.value = dmindate.format("MM/dd/yyyy");
        dmindate.setDate(dmindate.getDate()+1);
        try {
            elSel.add(elOptNew, null); // standards compliant doesn't work in IE
        }
        catch(ex) {
            elSel.add(elOptNew); // IE only
        }
    }
}

これはFF、Chrome、Safariで完全に機能しますが、IE8は日付のドロップダウンを表示せず、無効な引数がtryの閉じ括弧と同じ行であると表示されました。

どんな助けでも大歓迎です!

4

4 に答える 4

1

Date.prototype.parseStringメソッドがどこから来たのかわかりませんformat。おそらく、日付ライブラリを追加しているのでしょう。それらは ECMAScript ed 3 または 5 の一部ではありません。

次の行を置き換えることができます。

> var elOptNew = document.createElement('option'); 
> elOptNew.text =dmindate.format("EE NNN d, yyyy");
> elOptNew.value = dmindate.format("MM/dd/yyyy");

と:

var elOptNew = new Option(dmindate.format("EE NNN d, yyyy"), // option text
                          dmindate.format("MM/dd/yyyy"));    // option value

それを選択に追加します:

elSel.appendChild(elOptNew);

上記は、IE およびその他のブラウザーのすべてのバージョンで機能します。Option コンストラクタの詳細については、http://dev.w3.org/html5/spec/single-page.html#the-option-elementを参照してください。

編集

add メソッドの DOM 2 HTML 仕様では、次のように述べられています。

before パラメータが null の場合、このメソッドは Node インターフェースの appendChild メソッドと同等です。

それは ECMAScriptnullオブジェクトを渡すという意味ではなく、「第 2 パラメーターがなければ」という意味です。仕様は言語に依存せず、JavaScript 固有のものではありません。HTML5 OptionsCollection add メソッドnullは同じです (つまり、「null」は、javascriptオブジェクトではなく、パラメーターがないことを意味します)。

于 2012-08-17T06:54:30.857 に答える
0

私が見つけたドキュメントから、nullパラメータを持つことは意味がありません。nullただし、異なるブラウザーのJavaScriptエンジンがこのメソッドを異なる方法で処理すること、およびIEが2番目のパラメーターとして 好まないことは明らかです。

したがって、マントラに従って、jQueryを使用する必要があります。それは良いことであり、すべてのことを行います。かなり幅広い互換性があるため、実際にはDOMのブラウザー実装間の違いからユーザーを保護するのに役立ちます。とにかくこの男の問題を修正しました。

おそらくappend()、の代わりに使用することをお勧めしますadd()。例えば:

var elOptNew = $('<option></option>');
...
elSel.append(elOptNew); 
于 2012-08-17T06:45:21.853 に答える
0

使用してみてください

elSel.options.add(elOptNew)

これはすべてのブラウザで機能する必要があります。例を参照してください

于 2012-08-17T07:20:35.803 に答える
0

選択に新しいオプションを追加する別の方法もあります。

var opts = elSel.options;
opts[opts.length] = new Option(dmindate.format("EE NNN d, yyyy"), dmindate.format("MM/dd/yyyy"));

すべての主要ブラウザで動作する例

于 2012-08-17T07:20:59.983 に答える