您好我正在尝试学习javascript而我正在弄乱这个example我发现:
function moveOptionUp(obj) {
if (!hasOptions(obj)) { return; }
for (i = 0; i < obj.options.length; i++) {
if (obj.options[i].selected) {
if (i != 0 && !obj.options[i - 1].selected) {
swapOptions(obj, i, i - 1);
obj.options[i - 1].selected = true;
}
}
}
}
我有一个列表框
<input type="button" value="Up" onclick="moveOptionUp(this.form['_lb2'])" />
<asp:ListBox ID="_lb2" name="_lb2" runat="server" Height="400px" Width="170px"/>
但是我无法让它工作......该示例使用了一个html选择框。我认为问题在于将控件作为参数传递。使用asp控件执行此操作的正确方法是什么。
哦BTW ..列表框项目是动态添加的
答案 0 :(得分:2)
要将选项向上移动一个,请将其作为上一个选项的上一个同级插入(前提是它不是前一个选项):
function moveUp(sel) {
var idx = sel.selectedIndex;
var opt;
// Only move up if not first
if (idx > 0) {
opt = sel.options[idx];
sel.insertBefore(opt, sel.options[--idx]);
}
}
更改测试以检查idx > 0
,因为如果未选择任何选项, selectedIndex 将为-1。如果没有选择defalut选项并且表单被重置,则可能发生这种情况。
示例HTML:
<form action="">
<select id="_lb2" name="_lb2">
<option>0
<option>1
<option>2
<option>3
</select>
<input type="button" value="Move Up" onclick="
moveUp(this.form['_lb2']);
">
</form>
答案 1 :(得分:1)
我认为问题在于将控件作为参数传递
...的确
更改
onclick="moveOptionUp(this.form['_lb2'])"
到
onclick="moveOptionUp(document.getElementById('_lb2'))"
btw,(您可能已经知道这一点)_lb2
的ID不被视为valid