gpt4 book ai didi

javascript - 在 Internet Explorer 中交换选项框?

转载 作者:行者123 更新时间:2023-11-30 18:59:17 25 4
gpt4 key购买 nike

我的客户要求我(JavaScript 客户端程序员)更改选项的顺序,以便他们公司的选项在页面加载时显示在选择框的顶部。

以下代码在 Firefox 中有效,但在我尝试交换两个选项时在 Internet Explorer 7 中失败:

    function load{
var shippingLocation = document.getElementById("location");
var swap = null;

var initiallyFirstItem = shippingLocation.options[0].cloneNode(true);

var lastPos = null;

for(var i = 0; i < shippingLocation.length; i++)
{
if(shippingLocation.options[i].value == "XETEX")
{
swap = shippingLocation.options[i];
lastPos = i;
break;
}
}
console.debug("sl: " + shippingLocation.options[0]);
console.debug("s: " + swap);
shippingLocation.options[0] = swap;
shippingLocation.options[lastPos] = initiallyFirstItem;
shippingLocation.selectedIndex = 0;
}

我在倒数第三行的旁边得到一个错误:

shippingLocation.options[0] = swap;

错误指出“对象不支持此属性或方法”。

Internet Explorer 在切换选项项方面的优势是什么?

最佳答案

嗯,我做了一些测试,我相信 IE 认为选项数组是不可变的(在某种程度上)。您可以编辑选项,也可以删除它们,但不能将一个选项设置为另一个选项。

所以当你这样做的时候:

  shippingLocation.options[0] = swap;

IE 正在提示,因为您正试图将一个选项设置为另一个选项。

我会这样做:

> Removed due to excessive stupidity on
> my part. :P

这里有一个更好的方法:

<script type="text/javascript">
function swap(obj,i,j) {
sib=obj.options[i].nextSibling;
obj.insertBefore(obj.options[i],obj.options[j]);
obj.insertBefore(obj.options[j],sib);
}
</script>

关于javascript - 在 Internet Explorer 中交换选项框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/404073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com