嗨,我正在尝试学习 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 控件执行此操作的正确方法是什么?
哦顺便说一句..列表框项目是动态添加的
最佳答案
要将选项向上移动一个,请将其插入为前一个选项的前一个同级选项(前提是它还不是顶部选项):
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。如果没有默认选择的选项并且表单被重置,则可能会发生这种情况。
编辑
示例 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>
关于javascript - 向上/向下移动选项列表框 JavaScript/ASP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7143214/