一些(JavaScript)事件重新排序有序的html选择选项
我在一些(JavaScript)事件重新排序有序的html选择选项,javascript,html,Javascript,Html,我在-tag中有一个无序(通过jsp-tags动态生成)的选项列表。 在标记呈现之后,我使用一个简单的JavaScript函数对其重新排序 如果我使用-元素的onClick-事件处理程序,我将获得/查看网页上的有序列表。如果我将该函数附加到我的onload-事件处理程序中,将调用该函数,调试器将向我显示正确的值,但我的选项-元素的结果顺序未排序 如果我在dom元素后面添加带有普通-标记的方法调用,同样的行为也会发生 限制 没有jQuery 数据源不可排序 onClick-处理程序不是probe
-tag中有一个无序(通过jsp
-tags动态生成)的选项列表。
在标记呈现之后,我使用一个简单的JavaScript函数对其重新排序
如果我使用
-元素的onClick
-事件处理程序,我将获得/查看网页上的有序列表。如果我将该函数附加到我的onload
-事件处理程序中,将调用该函数,调试器将向我显示正确的值,但我的选项
-元素的结果顺序未排序
如果我在dom元素后面添加带有普通
-标记的方法调用,同样的行为也会发生
限制
- 没有jQuery
- 数据源不可排序
-处理程序不是prober解决方案onClick
- 必须在旧浏览器中工作
function sortSelectById(elementId) {
var list = document.getElementById(elementId);
var options = []
for(var i = 0; i < list.length; i++) {
options[i] = [];
options[i][0] = list.options[i].text;
options[i][1] = list.options[i].value;
options[i][2] = list.options[i].selected;
}
options.sort();
for (var i = 0; i < options.length; i++) {
list.options[i].text = options[i][0];
list.options[i].value = options[i][1];
list.options[i].selected = options[i][2];
}
return;
}
函数sortSelectById(elementId){
var list=document.getElementById(elementId);
变量选项=[]
对于(变量i=0;i
您遇到的问题是由于二维数组造成的。JavaScript需要被准确地告知排序依据
我们通过将比较函数
传递给
下面是一个例子:
函数比较函数(a,b){
如果(a[0]==b[0]){
返回0;
}
否则{
返回值(a[0]
香蕉
苹果
橙色
葡萄
谢谢您的帮助。
“问题”相当简单,但却是各种错误的组合
不要将事件附加到正文
,将其附加到根窗口
元素
IE(>6)需要另一个方法调用来向处理程序追加事件
IE(>6)需要一个方法引用,并且没有带参数的直接methodcall
以下代码适用于我的场景
/* Required by the compatibility requirement for IE8 and older */
function sortStatus() {
sortSelectById('elem_id') ;
// sort other fields...
}
if (window.addEventListener) {
window.addEventListener('load', sortStatus, false);
}
else if (window.attachEvent) {
window.attachEvent('onload', sortStatus);
}
更新
function sortSelectById(elementId) {
var list = document.getElementById(elementId);
var options = []
for(var i = 0; i < list.length; i++) {
options[i] = [];
options[i][0] = list.options[i].text;
options[i][1] = list.options[i].value;
options[i][2] = list.options[i].selected;
}
options.sort();
for (var i = 0; i < options.length; i++) {
list.options[i].text = options[i][0];
list.options[i].value = options[i][1];
list.options[i].selected = options[i][2];
}
return;
}
感谢@Howard Renollet!额外的comperator提示非常整洁,效果非常好 什么JavaScript首先填充选择列表?对不起,我不太熟悉Stackoverflow。祝你今天愉快。:)