簡體   English   中英

通過Javascript進行的innerHTML填充在IE9中不起作用

[英]innerHTML population through Javascript is not working in IE9

我有一個帶有+標記的HTML表單。 我想通過Javascript對選項列表進行排序。 我寫了一個可以在Chrome,Firefox,Safari和Opera中運行的代碼,但是在Internet Explorer中卻無法運行。 我在下面粘貼Javasript代碼。 我的代碼中缺少什么嗎?

window.onload = function () {
categoryOptions = $('category').innerHTML;
$('category').innerHTML = sortCategoryOptions(categoryOptions);
};

下面給出了sortCategoryOptions()的函數定義:

function sortCategoryOptions(categoryOptions) {
var eachOption = categoryOptions.split('</option>');
for (var i = 0; i < (eachOption.length - 1); i++) {
    eachOption[i] = eachOption[i] + '</option>';
}
eachOption.sort();
optionsSorted = '';
for (var i = 0; i < eachOption.length; i++) {
    optionsSorted = optionsSorted + eachOption[i];
}
return optionsSorted; 
} 

categoryOptions字段具有以下內容

<option>Option3</option>
<option>Option1</option>
<option>Option2</option>
<option>Option4</option>

預期產量

首先,您實際上是在尋找<category>標記,我敢肯定這不是您的意圖。 忽略,正如注釋中指出的那樣, $看起來像是document.getElementById的別名,而不是jQuery

除此之外,使用innerHTML進行排序是一個可怕的想法,甚至更是如此,因為您依賴</option>而不被瀏覽器的解析器更改(它總是會更改為</OPTION>

因此,考慮到這一點,並假設您正在使用<select id="category"> ,請嘗試一下:

window.onload = function() {
    var sel = document.getElementById('category'),
        arr = [].concat.apply([],sel.children), // convert NodeList to array
        l = arr.length, i;
    arr.sort(function(a,b) {return a.text < b.text ? -1 : 1});
    for( i=0; i<l; i++) sel.appendChild(arr[i]);
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM