[英]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.