请问这个程序怎么改?

sftl25789 2008-07-03 03:32:03
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="CityList.ascx.cs" Inherits="Controls_CityList" %>

<select name="CityID_Fl1" id="CityID_Fl1" size="1" onChange="redirect(this.selectedIndex)">
<option selected>--请选择--</option>
<option value="北京">北京</option>
<option value="天津">天津</option>
<option value="上海">上海</option>
<option value="广州">广州</option>
<option value="四川">四川</option>
</select>
<select name="CityID_Fl2" id="CityID_Fl2" size="1">
<option value=" " selected>--请选择--</option>
</select>

<script language="JavaScript">
var CityObj1 = document.getElementsByName("CityID_Fl1")

var groups=CityObj1.item.length
var group=new Array(groups)

for (i=0; i<groups; i++)
group[i]=new Array()

group[0][0]=new Option("--请选择 城市--"," ");

group[1][0]=new Option("--请选择 这里是北京--"," ");
group[1][1]=new Option("房山","房山");
group[1][2]=new Option("海淀","海淀");
group[1][3]=new Option("朝阳","朝阳");
group[1][4]=new Option("大兴","大兴");
group[1][5]=new Option("昌平","昌平");
group[1][6]=new Option("东城","东城");
group[1][7]=new Option("西城","西城");
group[1][8]=new Option("丰台","丰台");

group[2][0]=new Option("--请选择 这里是天津--"," ");
group[2][1]=new Option("塘沽","塘沽");

group[3][0]=new Option("--请选择 这里是上海--"," ");
group[3][1]=new Option("上海1","上海1");
group[3][2]=new Option("上海2","上海2");
group[3][3]=new Option("上海3","上海3");
group[3][4]=new Option("上海4","上海4");
group[3][5]=new Option("上海5","上海5");
group[3][6]=new Option("上海6","上海6");
group[3][7]=new Option("上海7","上海7");
group[3][8]=new Option("上海8","上海8");

group[4][0]=new Option("--请选择-- 这里是广州"," ");

group[5][0]=new Option("--请选择-- 这里是四川"," ");

var CityObj2=document.getElementsByName("CityID_Fl2")

function redirect(x)
{
for (m=CityObj2.item.length-1;m>0;m--)
CityObj2.item[m]=null

for (i=0;i<group[x].length;i++)
{
CityObj2.item.add(new Option(group[x][i].text,group[x][i].value))//错误提示的语句
}

//CityObj2.Item[0].Selected = true;
//CityObj2.Item.FindByValue[0].Selected = true;
CityObj2.SelectedIndex = 0;
}
</script>


我自己定义了一个.ascx控件,其中的内容如上
功能是实现一个地区的二级联动,但是当出发第一个下拉菜单的时候,提示:Microsoft JScript 运行时错误: 对象不支持此属性或方法
指向的是CityObj2.item.add(new Option(group[x][i].text,group[x][i].value))这句话,这句话应该是想第二个下拉菜单里添加option选项的。
是从网上找了很多语句,不是没反应就是提示各种各样的错误!
请问这句话到底要怎么写呀!
...全文
115 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
kofkyo 2008-07-03
  • 打赏
  • 举报
回复
CityObj2.item.add ==> CityObj2.options.add
一品梅 2008-07-03
  • 打赏
  • 举报
回复
JAVASCRIPT连动下拉列表定义数组
看看那两页怎么写的,熟悉一下语法。
function province()
{
var e = document.form1.province;
for (var i=0; i<provinceName.length; i++)
e.options.add(new Option(provinceName[i], provinceName[i]));

}
function cityName(n)
{
var e = document.form1.city;

e.options.length = 1;

if (n == 0) return;

var a = eval("city"+ n); //得到城市的数组名

for (var i=0; i<a.length; i++) e.options.add(new Option(a[i], a[i]));

}

window.attachEvent("onload", province); //初始时给省名下拉框赋内容

jamesfay 2008-07-03
  • 打赏
  • 举报
回复
不清楚,建议你拆开来
var newOpt = new Option(group[x][i].text,group[x][i].value);
alert(newOpt); //看看试不是null
alert(CityObj2); //看看试不是null
CityObj2.item.add(newOpt);

反正一个一个看,指到哪里错误就把那里拆开来,看看是不是有一个对象null了,因为你用userControl,可能里面控件的ID会变掉

我经常用一个办法,把出错页面save as HTML,然后一般修改HTML得JS一边刷新看看对不对
一品梅 2008-07-03
  • 打赏
  • 举报
回复
for (m=CityObj2.item.length-1;m>0;m--)
快乐乔巴 2008-07-03
  • 打赏
  • 举报
回复
var CityObj1 = document.getElementById("CityID_Fl1")
CityObj1.options.length
这样写吧!否则感觉你的长度永远不会变~~测试你的则么都是8??不管增加多少项目
sftl25789 2008-07-03
  • 打赏
  • 举报
回复
多谢多谢,顺便问个问题,如果把那两个下拉框改成服务器端控件有可能实现么?
Ny-6000 2008-07-03
  • 打赏
  • 举报
回复
help you .
sftl25789 2008-07-03
  • 打赏
  • 举报
回复
加上分号也没用,这个是javascript,有的时候不加分号也行
sftl25789 2008-07-03
  • 打赏
  • 举报
回复
加上分号也没用,这个是javascript,有的时候不加分号也行
yumi_yu 2008-07-03
  • 打赏
  • 举报
回复
额~~第一眼就看到的是你那句好像少了“;”

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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