4

要約すると、特定のノードの子を見つけるためにjQueryを使用するxml文字列があります。

これらの子とその値は、HTML選択ボックスを作成し、それをWebページに追加するために使用されます。

XML

<!--- Another node level !-->          
       <Salutation restricted="no" type="dropdownBox" tooltip="Select a title for the customer" required="yes" size="6">
           <value>Mr</value>
           <value>Sir</value>
           <value>Mrs</value>
           <value>Miss</value>
           <value>Lord</value>
       </Salutation>

コード

    function dropdownBuilder( xml, element, id ) {
       // find node with specific name and get its children
       selection = $("<div>" + xml + "</div>").find(element).children();
       console.log( selection );
       // generate a select box
       var selectBox = "<select id=\"" + id + "\"> ";
       for ( var j = 0; j < selection.length; j++ ) {
        selectBox += "<option value=\"" + selection[j].innerHTML + "\">"
                + selection[j].innerHTML + "</option>";
       }
       selectBox += "</select>";

       // return html
       return selectBox;
}

出力FIREFOX

<select id="dropdownBox1" data-hasqtip="true" aria-describedby="qtip-1">
    <option value="Mr">Mr</option>
    <option value="Sir">Sir</option>
    <option value="Mrs">Mrs</option>
    <option value="Miss">Miss</option>
    <option value="Lord">Lord</option>
</select>

出力IE

<select id="dropdownBox1" data-hasqtip="true" jQuery16309410884371447445="60"/>

IEのコンソールログには、「LOG:[オブジェクトオブジェクト]」とだけ表示されます。

.val()、. value、.data、.attrを使用して出力に変更してみました

これがFFでは正常に機能するがIEでは機能しない理由はありますか?

JSFIDDLE

http://jsfiddle.net/BA7u6/1/

ありがとう

4

2 に答える 2

1

コード内のforループをこれに置き換えることができ、機能するはずです。

selection.each(function(index) {
    var text = $(this).text();
    selectBox += "<option value=\"" + text + "\">" + text + "</option>";
});
于 2013-03-01T14:44:08.673 に答える
1

あなたはあなたがしたいことをするためにxmlパーサーを使うべきです

これを参照してください:http://api.jquery.com/jQuery.parseXML/

于 2013-03-01T14:42:38.100 に答える