控件数组的问题

a040liutao 2005-04-05 08:57:42
例如10个SELECT控件中,改变其中的一个时怎么得到改变的是数组中的第几个?
...全文
193 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
a040liutao 2005-04-05
  • 打赏
  • 举报
回复
先谢谢楼上的 问题的关键我的这些控件是动态生成的 我就是要得到doChange(2,this)里的2啊 不能先写死的
sakura8sakura 2005-04-05
  • 打赏
  • 举报
回复
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>新しいページ 1</title>
</head>

<body>

<script language="javascript">
var memberList = new Array();
memberList[0] = new Array();
memberList[1] = new Array();
memberList[2] = new Array();
memberList[3] = new Array();
memberList[4] = new Array();
memberList[5] = new Array();
memberList[6] = new Array();
memberList[7] = new Array();
memberList[8] = new Array();
memberList[9] = new Array();
memberList[0][0] = "1";
memberList[0][1] = "人员1-1";
memberList[1][0] = "1";
memberList[1][1] = "人员1-2";
memberList[2][0] = "1";
memberList[2][1] = "人员1-3";
memberList[3][0] = "2";
memberList[3][1] = "人员2-1";
memberList[4][0] = "2";
memberList[4][1] = "人员2-2";
memberList[5][0] = "2";
memberList[5][1] = "人员2-3";
memberList[6][0] = "3";
memberList[6][1] = "人员3-1";
memberList[7][0] = "3";
memberList[7][1] = "人员3-2";
memberList[8][0] = "3";
memberList[8][1] = "人员3-3";

function doChange(i,obj){
var dept = obj.value;
var n;
for(n=document.forms(0).men(i).options.length-1;n>=0;n--){
document.forms(0).men(i).options.remove(n);
}
var opValue = 0;
for(n=0;n<9;n++){
if(memberList[n][0]==dept){
var oOption = document.createElement("OPTION");
document.forms(0).men(i).options.add(oOption);
oOption.innerText = memberList[n][1];
oOption.value = opValue++;
}
}
}

</script>


<form method="POST" action="--WEBBOT-SELF--">
<!--webbot bot="SaveResults" U-File="fpweb:///_private/form_results.txt"
S-Format="TEXT/CSV" S-Label-Fields="TRUE" -->
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td width="50%"><select size="1" name="depts" onChange="doChange(0,this)">
<option value="1">部门1</option>
<option value="2">部门2</option>
<option value="3">部门3</option>
</select></td>
<td width="50%"><select size="1" name="men">
<option value="1">人员1-1</option>
<option value="2">人员1-2</option>
<option value="3">人员1-3</option>
</select></td>
</tr>
<tr>
<td width="50%"><select size="1" name="depts" onChange="doChange(1,this)">
<option value="1">部门1
<option value="2">部门2</option>
<option value="3">部门3</option>
</select></td>
<td width="50%"><select size="1" name="men">
<option value="1">人员1-1</option>
<option value="2">人员1-2</option>
<option value="3">人员1-3</option>
</select></td>
</tr>
<tr>
<td width="50%"><select size="1" name="depts" onChange="doChange(2,this)">
<option value="1">部门1
<option value="2">部门2</option>
<option value="3">部门3</option>
</select></td>
<td width="50%"><select size="1" name="men">
<option value="1">人员1-1</option>
<option value="2">人员1-2</option>
<option value="3">人员1-3</option>
</select></td>
</tr>
</table>
<p> </p>
</form>

</body>

</html>
a040liutao 2005-04-05
  • 打赏
  • 举报
回复
问题的关键是怎么取到我所点的部门SELECT是整个控件数组的第几个?
这个问题帮我搞顶就100分全给了
a040liutao 2005-04-05
  • 打赏
  • 举报
回复
楼上不对啊 我不是一般的联动啊
10个部门的SELECT对应10个人员的SELECT啊
fantiny 2005-04-05
  • 打赏
  • 举报
回复
<script language="JavaScript">
var subcat = new Array();
subcat[0] = new Array("广?","服?中心","服?中心","BG01","06","0601");
subcat[1] = new Array("河北","前台接待","前台接待","BG02","06","0602");
subcat[2] = new Array("河南","??部","??部","BK02","12","1202");
subcat[3] = new Array("湖北","???算部","???算部","BK01","12","1201");

function changeselect1(locationid)
{
document.form1.SDepart.length = 0;
for (i=0; i<subcat.length; i++)
{
if (subcat[i][0] == locationid)
{
var op = new Option(subcat[i][1], subcat[i][2]);
op.id = subcat[i][1];
document.form1.SDepart.options[document.form1.SDepart.length] = op; //此行生成新的Option
}
}
}
</script>

<form name=form1>
<select name="BDepart" onChange="changeselect1(this.value)">
<option value="广?">广?</option>
<option value="河北">河北</option>
<option value="河北">河南</option>
<option value="河北">湖南</option>
</select>
<select name=SDepart></select>
</form>
<input type=button value=innerHTML onclick="alert(document.form1.SDepart.innerHTML)">
fantiny 2005-04-05
  • 打赏
  • 举报
回复
<script language="JavaScript">
var subcat = new Array();
subcat[0] = new Array("广?","服?中心","服?中心","BG01","06","0601");
subcat[1] = new Array("河北","前台接待","前台接待","BG02","06","0602");
subcat[2] = new Array("河南","??部","??部","BK02","12","1202");
subcat[3] = new Array("湖北","???算部","???算部","BK01","12","1201");

function changeselect1(locationid)
{
document.form1.SDepart.length = 0;
for (i=0; i<subcat.length; i++)
{
if (subcat[i][0] == locationid)
{
var op = new Option(subcat[i][1], subcat[i][2]);
op.id = subcat[i][1];
document.form1.SDepart.options[document.form1.SDepart.length] = op; //此行生成新的Option
}
}
}
</script>

<form name=form1>
<select name="BDepart" onChange="changeselect1(this.value)">
<option value="广?">广?</option>
<option value="河北">河北</option>
<option value="河北">河南</option>
<option value="河北">湖南</option>
</select>
<select name=SDepart></select>
</form>
<input type=button value=innerHTML onclick="alert(document.form1.SDepart.innerHTML)">
a040liutao 2005-04-05
  • 打赏
  • 举报
回复
详细问题:
一个表格有2列
部门下拉菜单 人员下拉菜单
部门下拉菜单 人员下拉菜单
部门下拉菜单 人员下拉菜单
部门下拉菜单 人员下拉菜单
部门下拉菜单 人员下拉菜单
部门下拉菜单 人员下拉菜单
部门下拉菜单 人员下拉菜单

其中部门下拉菜单名称都是depts 人员下拉菜单名称都是 men 改变某个部门下拉菜单时 相应的改变人员下拉菜单!
a040liutao 2005-04-05
  • 打赏
  • 举报
回复
在线等
a040liutao 2005-04-05
  • 打赏
  • 举报
回复
for (j=0;j<thisForm.item("Bu"+i).length;j++)
{
if (thisForm.item("dept"+i)(j).uniqueID == control.uniqueID) {break;}
}

controlToPopulate = thisForm.item("pname"+i)(j);
try
{
var tempq=controlToPopulate.options.length
}
catch(e)
{
controlToPopulate = thisForm.item("pname"+i);
}
我自己搞定了 把这段加到CHANGE事件里 thisForm.item("Bu"+i)是我加的一个辅助的HIDDEN控件
通过FOR循环来得到我点的是哪个 uniqueID只有动态添加的控件才有这个属性
TRY和CATCH来判断控件是单独的一个还是复数个(即数组的情况)(0个的情况不可能触发change事件所以不考虑)
zhutimy 2005-04-05
  • 打赏
  • 举报
回复
城市太多,没给完你.
你试一安徽和北京上海之类的,效果就出来了.
zhutimy 2005-04-05
  • 打赏
  • 举报
回复
<script language="javascript">
var city=new Array();city[1] = new Array("北京市","0","1");

city[2] = new Array("上海市","0","2");

city[3] = new Array("天津市","0","3");

city[4] = new Array("重庆市","0","4");

city[5] = new Array("合肥","21","6");

city[6] = new Array("芜湖","21","7");

city[7] = new Array("马鞍山","21","8");

city[8] = new Array("蚌埠","21","10");

city[9] = new Array("淮南","21","11");

city[10] = new Array("淮北","21","12");

city[11] = new Array("铜陵","21","13");

city[12] = new Array("安庆","21","14");

city[13] = new Array("黄山","21","15");

city[14] = new Array("滁州","21","16");

city[15] = new Array("阜阳","21","17");

city[16] = new Array("宿州","21","18");

city[17] = new Array("巢湖","21","19");

city[18] = new Array("六安","21","20");

city[19] = new Array("毫州","21","21");

city[20] = new Array("池州","21","22");

city[21] = new Array("宣城","21","23");

city[22] = new Array("石家庄市","8","25");

city[23] = new Array("唐山市","8","26");

......

var count=city.length;
function changelocation(locationid)
{
document.all["cityid"].length = 0;
var i;
var found;
for (i=1;i < count; i++)
{
if (city[i][1] == locationid)
{
found=true;
document.all["cityid"].options[0] = new Option("其它", "388");
document.all["cityid"].options[document.all["cityid"].length] = new Option(city[i][0], city[i][2]);
}
}
if(!found){
document.all["cityid"].options[document.all["cityid"].length] = new Option("---请选择---", "0");
document.all["showcity"].style.display="none";
}else{
document.all["showcity"].style.display="";
document.all["cityid"].selectedIndex=0;
}
}
function showcity(){
if(document.all["nocity"].checked){
document.all["cityid"].style.display="none";
}else{
document.all["cityid"].style.display="";
}
}
</script>
<select name="provinceid" id="proviceid" onChange="changelocation(document.all['proviceid'].options[document.all['proviceid'].selectedIndex].value)">
<option value="-1">请选择所在地</option>
<option value="1" >北京</option><BR><option value="2" >上海</option><BR><option value="3" >天津</option><BR><option value="4" >重庆</option><BR><option value="5" >台湾</option><BR><option value="6" >澳门</option><BR><option value="7" >香港</option><BR><option value="8" >河北</option><BR><option value="9" >山西</option><BR><option value="10" >内蒙古</option><BR><option value="11" >辽宁</option><BR><option value="12" >吉林</option><BR><option value="13" >江苏</option><BR><option value="14" >浙江</option><BR><option value="15" >福建</option><BR><option value="16" >江西</option><BR><option value="17" >山东</option><BR><option value="18" >河南</option><BR><option value="19" >湖北</option><BR><option value="20" >湖南</option><BR><option value="21" >安徽</option><BR><option value="22" >广东</option><BR><option value="23" >广西</option><BR><option value="24" >海南</option><BR><option value="25" >四川</option><BR><option value="26" >贵州</option><BR><option value="27" >云南</option><BR><option value="28" >陕西</option><BR><option value="29" >甘肃</option><BR><option value="30" >青海</option><BR><option value="31" >宁夏</option><BR><option value="32" >新疆</option><BR><option value="33" >西藏</option><BR><option value="34" >东亚</option><BR><option value="35" >西亚</option><BR><option value="36" >北美</option><BR><option value="37" >南美</option><BR><option value="38" >欧洲</option><BR><option value="39" >非洲</option><BR><option value="40" >大洋州</option><BR>
</select>
<label id="showcity" >
<select name="cityid" id="cityid">
<input name="nocity" type="checkbox" value="1" onClick="showcity()">忽略子级<script language='javascript'>showcity();</script>
</select>
</label>
<script language="javascript">
changelocation(document.all["proviceid"].options[document.all["proviceid"].selectedIndex].value);
</script>
a040liutao 2005-04-05
  • 打赏
  • 举报
回复
顶起来
a040liutao 2005-04-05
  • 打赏
  • 举报
回复
等待高手 解决问题的再开贴给300分!
a040liutao 2005-04-05
  • 打赏
  • 举报
回复
楼上的还是不对啊
我的情况比较特殊 希望在CHANGE事件里来得到你这的I值 可以吗?
还有 怎么样可以取到SELECT控件数组的个数?
比如取 名为depts的SELECT控件有多少个? 不能用FormName.depts.length来取 这个取到的是第一个depts控件的option的个数
micker 2005-04-05
  • 打赏
  • 举报
回复
只有用for循环来判断。
sakura8sakura 2005-04-05
  • 打赏
  • 举报
回复


<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>新しいページ 1</title>
</head>

<body>

<script language="javascript">
var memberList = new Array();
memberList[0] = new Array();
memberList[1] = new Array();
memberList[2] = new Array();
memberList[3] = new Array();
memberList[4] = new Array();
memberList[5] = new Array();
memberList[6] = new Array();
memberList[7] = new Array();
memberList[8] = new Array();
memberList[9] = new Array();
memberList[0][0] = "1";
memberList[0][1] = "人员1-1";
memberList[1][0] = "1";
memberList[1][1] = "人员1-2";
memberList[2][0] = "1";
memberList[2][1] = "人员1-3";
memberList[3][0] = "2";
memberList[3][1] = "人员2-1";
memberList[4][0] = "2";
memberList[4][1] = "人员2-2";
memberList[5][0] = "2";
memberList[5][1] = "人员2-3";
memberList[6][0] = "3";
memberList[6][1] = "人员3-1";
memberList[7][0] = "3";
memberList[7][1] = "人员3-2";
memberList[8][0] = "3";
memberList[8][1] = "人员3-3";

function doChange(i,obj){
var dept = obj.value;
var n;
for(n=document.forms(0).men(i).options.length-1;n>=0;n--){
document.forms(0).men(i).options.remove(n);
}
var opValue = 0;
for(n=0;n<9;n++){
if(memberList[n][0]==dept){
var oOption = document.createElement("OPTION");
document.forms(0).men(i).options.add(oOption);
oOption.innerText = memberList[n][1];
oOption.value = opValue++;
}
}
}

</script>


<form method="POST" action="--WEBBOT-SELF--">
<!--webbot bot="SaveResults" U-File="fpweb:///_private/form_results.txt"
S-Format="TEXT/CSV" S-Label-Fields="TRUE" -->
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<%
for(int i=0;i<10;i++){
%>
<tr>
<td width="50%"><select size="1" name="depts" onChange="doChange(<%=i%>,this)">
<option value="1">部门1</option>
<option value="2">部门2</option>
<option value="3">部门3</option>
</select></td>
<td width="50%"><select size="1" name="men">
<option value="1">人员1-1</option>
<option value="2">人员1-2</option>
<option value="3">人员1-3</option>
</select></td>
</tr>
<%
}
%>
</table>
<p> </p>
</form>

</body>

</html>
a040liutao 2005-04-05
  • 打赏
  • 举报
回复
高手呢?

87,909

社区成员

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

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