一个js小函数的疑问

风流才子 2011-01-26 02:25:29
今天写一个小函数遇到的小问题,请各位兄弟们帮帮忙,先看下面代码:

<form id="test" name="test" action="" method="post">
<select id="Position" name="Position">
<option value="0">- 请选择 -</option>
<option value="1">董事长</option>
<option value="2">总经理</option>
<option value="3">副总</option>
</select><br />
<select id="Depart" name="Depart">
<option value="0">- 请选择 -</option>
<option value="1">管理部</option>
<option value="2">人事部</option>
<option value="3">业务部</option>
</select><br />
<select id="PlanType" name="PlanType">
<option value="0">- 请选择 -</option>
<option value="1">拜访面谈</option>
<option value="2">电话沟通</option>
<option value="3">书面洽谈</option>
</select><br />
</form>


//不写函数,直接指定值
var sID = "2";
for (i=0;i<document.test.Position.options.length;i++){
if (document.test.Position.options[i].value == sID)
document.test.Position.options[i].selected = true;
}


//参数:select的ID,指定值
function selectIt(sSelect, sID) {
var j = document.getElementById(sSelect);
var len = j.options.length;
for (var i = 0; i < len; i++) {
if (j.options[i].value == sID) {
j.options[i].selected = true;
return;
}
}
}


//参数:form名,select名,指定值
function selectedIt(sForm, sSelect, sID) {
var a = document.sForm.sSelect;
var b = a.options.length;
for(var i=0; i < b; i++){
if(a.options[i].value == sID){
a.options[i].selected = true;
return;
}
}
}

selectIt("Depart","2");
selectedIt("test","PlanType","3");

请看js部分,最上面不写成函数,直接指定form名,select名和指定值来定位是没有任何问题的.
后来想一想,经常要用到,那就写成函数吧,方便调用.于是有了selectIt这个函数,通过引入select的ID值和指定值两个参数来定位,初步使用也正常.
后来使用中发现一个问题,万一页面中有几个form,有几个相同的select,那就不行了,selectIt函数只会针对第一个form有效,如果用其它方法来循环指定虽然可以实现,但似乎与初衷不一样了,我要指定某个form的某个select的值.于是想改一下函数,再引入一个sForm的参数来指定form,于是有了selectedIt函数,结果测试发现问题了,报 'document.sForm.sSelect' 为空或不是对象的错误,请各位兄弟支招,这个函数应该如何修改,谢谢.
...全文
124 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
风流才子 2011-01-26
  • 打赏
  • 举报
回复
汗,原来如此简单,多年不搞程序,忘得一干二净了...
foolbirdflyfirst 2011-01-26
  • 打赏
  • 举报
回复
这个你得区分参数值和js字面量啊
函数里的
var a = document.sForm.sSelect;
这一句,浏览器会解析成找name为'sForm'的form,并不是你想象的sForm为实参值
var a = eval('document.'+sForm+'.'+sSelect+';');

这样才是你想要的。

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧