我想实现多个select控件无法修改选中的选项。我想用如下方式实现,但失败了。原因我已经找到,是参数i在运行时已经大于form.element.length了。但我仍希望实现该功能,因为我的网页的select控件的数量是在运行是才能决定,而且很多。请大家帮助,谢谢。
<html>
<head>
<title>Test B</title>
</head>
<body>
<form name="form1" id="form1">
<select name="a_1" id="a_1">
<option value="1" selected="selected">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<br />
<select name="b_1" id="b_1">   
<option value="1">1</option>
<option value="2">2</option>
<option value="3" selected="selected">3</option>
</select>
</form><script type="text/javascript">
function restoreSelect(a, i)
{
alert("i = " + i + "\ndocument.form1.elements.length = " + document.form1.elements.length);
document.form1.elements[i].selectedIndex = a;
}for (var i = 0; i < document.form1.elements.length; i++)
{
if (document.form1.elements[i].type == "select-one")
{
var initValue = document.form1.elements[i].selectedIndex;
document.form1.elements[i].onchange = function(){ restoreSelect(initValue, i)};
}
}
i++;
</script></body>
</html>

解决方案 »

  1.   

    比如第一个select控件,默认选项是1。我希望它永远是1,但又不希望用disabled,因为那样显示的不好。所以我用一个函数使它在onchange时恢复原来的selectedIndex。
    我这个函数原先使用的是restoreSelect(e, initValue),e是控件,直接用restoreSelect(form1.a_1, 0)调用,运行没有问题。
    但由于我想在运行时把所有的select控件都用这个函数,于是就把它改做restoreSelect(控件id, initValue),但由于在用function(){}调用时没法使用正确的“控件id”导致我的这个方法没法使用。
      

  2.   

    我要实现的是select的readonly功能。即可以下拉,但选择选项后,会自动回复到原先的选项。因为有很多个这样的控件,所以需要一个函数来实现。求助了。
      

  3.   

    没找到其他设置onchange的好方法,只好用个笨方法解决<script type="text/javascript">
    function restoreSelect(a, k)
    {
        document.form1.elements[k].selectedIndex = a;    
    }for (var i = 0; i < document.form1.elements.length; i++)
    {    
        if (document.form1.elements[i].type == "select-one")
        {
            var initValue = document.form1.elements[i].selectedIndex;
            eval( "document.form1.elements[i].onchange = function(){ restoreSelect("+initValue+", "+i+")};" );
        }
    }
    </script>