page_load和调用JS中函数,说“对象为空”

natfit 2004-05-11 11:56:22
从网上下载了一下js编的省市县三级联动下拉列表,当导入aspx中时出错,在page_load中执行下拉列表的生成函数时,说对象为空,怀疑是页面中还没有这几个对象,不知有没有在页面生成后才调用生成函数的事件和方法?

js正确,如果全部copy到aspx页面中,则顺序往下执行,很正常。

另外,由于是用js在客户端生成下拉列表项,在postback后,数据就不见了,需要重新生成和选择,有没有保持数据的办法?
...全文
370 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cutesun 2004-06-14
  • 打赏
  • 举报
回复
.js中有中文,把web.config中的utf-8改成gb2312
孟子E章 2004-05-11
  • 打赏
  • 举报
回复
应该在客户端的<body onload="load()">里调
bitsbird 2004-05-11
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/3047/3047271.xml?temp=.4536096
wolf_z 2004-05-11
  • 打赏
  • 举报
回复
贴出代码
natfit 2004-05-11
  • 打赏
  • 举报
回复
没有人肯帮忙吗?!
natfit 2004-05-11
  • 打赏
  • 举报
回复
上面语句中有错,已改为:

function setup()
{
start();  ----此行已删除

for(i=0;i<s.length-1;i++)
document.getElementById(s[i]).onchange=new Function("change("+(i+1)+")");
change(0);
}
natfit 2004-05-11
  • 打赏
  • 举报
回复
在body onload中调用正确,但第二个问题依旧:保持不了数据,按提交时无法将原来的值赋回去!

代码绝对正确!

page_load:

Page.RegisterStartupScript("", "<script language='JavaScript'>setup();</script>")

该setup在页面内,但其中调用了一个在js内的change()。

function setup()
{
start();
for(i=0;i<s.length-1;i++)
document.getElementById(s[i]).onchange=new Function("change("+(i+1)+")");
change(0);
}

页面内定义了二个变量:var s=['s1','s2','s3'];
var opt0 = ['省份','地级市','市、县级市、区'];


js内又定义了一个变量,    (不知这儿是不是有问题?)

function Dsy() {this.Items = {};}

var dsy = new Dsy();

Dsy.prototype.add = function(id,iArray) {
this.Items[id] = iArray
}

Dsy.prototype.Exists = function(id) {
if(typeof(this.Items[id]) == "undefined") return false;
return true;
}


function change(v){

var str="0";

for(i=0;i<v;i++){ str+=("_"+(document.getElementById(s[i]).selectedIndex-1));};

var ss=document.getElementById(s[v]);

with(ss){
length = 0;
options[0]=new Option(opt0[v],opt0[v]);
if(v && document.getElementById(s[v-1]).selectedIndex>0 || !v)
{
if(dsy.Exists(str)){
ar = dsy.Items[str];
for(i=0;i<ar.length;i++)options[length]=new Option(ar[i],ar[i]);
if(v)options[1].selected = true;
}
}
if(++v<s.length){change(v);}
}
}


dsy.add("0",["安徽省","北京市","福建省","甘肃省","广东省","广西壮族自治区","贵州省","海南省","河北省","河南省","黑龙江省","湖北省","湖南省","吉林省","江苏省

以下是添加的地区县等数组


aspx页面内只有三个ID为s1,s2,s3的select控件,没有赋值

62,047

社区成员

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

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

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

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