• 全部
  • .NET Framework
  • ASP
  • Web Services
  • .NET互联网桌面应用
  • VB
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • AppLauncher
  • 问答

动态生成的div第二次调用失败问题,望各位高手解答,急求

listhome 2010-11-11 04:44:34
先说一下大概过程:
页面两个按钮,一个初始化,一个查询。
点击初始化,会使用ajax发送到asp服务器返回个xml,然后解析xml后动态生成一个查询的条件(可多选,每个查询条件基本是一个复选框,一个label,一个下拉列表,一个textbox)。
然后再根据输入的查询条件,本地js解析成xml通过ajax发送asp服务器返回结果xml。
本地解析后,再对展示结果的div进行绑定。动态生成结果table。
不知道我表述的清楚了么。。。。。(暂不考虑ajax跨域问题)
现在的问题是,第一次点击查询后,都可以正常执行,但是第二次点击查询(不做任何修改都不行),提示结果的div不能为空啥的。
第二次执行的语句报错地方:
document.getElementById("divResult").outerHTML = strDisp;
document.getElementById("divResult")的值为null


<body>
<input id="Button1" type="button" value="初始化" onclick="Init()" />
<input id="ButtonSearch" type="button" value="查询" onclick="SearchTable()" />
<label id="lblMessage"></label>
<form id="formDynamicTable" method="post">
<table width="100%" id="table1" cellpadding="0" cellspacing="0" border="0" style="PADDING-RIGHT: 5px; PADDING-LEFT: 5px"></table>
</form>
<form id="frmTransferInfo" method="post">
<textarea style="DISPLAY: none" name="E"></textarea>
<textarea style="DISPLAY: none" name="F"></textarea>
<textarea style="DISPLAY: none" name="G"></textarea>
<textarea style="DISPLAY: none" name="H"></textarea>

</form>

<form id="frmResult" method="post">

<span> <label id="Samplabel"></label></span>
<textarea style="DISPLAY: none" name="A" rows="10"></textarea>
<textarea style="DISPLAY: none" name="B" id="taRecord" ></textarea>
<textarea style="DISPLAY: none" name="C" ></textarea>
<textarea style="DISPLAY: none" name="D" ></textarea>
<!--Display Table -End here------------------------------------------->

<div id="divResult" style="width: 200px; height: 200px; overflow: auto;" ></div>
</form>

</body>
...全文
109 点赞 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Squall008 2010-11-16
[Quote=引用 13 楼 coco_ke 的回复:]
比如说你这样:

HTML code

<div id="div">
<div id="divResult" style="width: 200px; height: 200px; overflow: auto;" ></div>
</div>
<div id="strDisp">strdisp</div>
<input name="innerHTML" value="in……
[/Quote]

用了你的代码替换了我的div,结果第二次查询后,点击你的button1按钮,还是报错
document.getElementById('divResult'),为null。
第一次查询后,点击button1按钮,也是这个错误。
innerHTML是一个table。outerHTML多了一个<DIV id=div></div>

另外非常感谢你一直回答我的问题!
回复
Squall008 2010-11-15
[Quote=引用 10 楼 coco_ke 的回复:]
不一样,显示的信息一个有Div,一个没有
使用document.getElementById("divResult").outerHTML = strDisp;的时候,Div被干掉了,再接着找这个Div就没了
如果document.getElementById("divResult").innerHTML= strDisp;那么只是Div里面的东西被干掉了,Div还在,再找这个Div就可以找到……
[/Quote]

我把你的div这样放置:
<div id="div"><input name="button" value="Button" type="button"><font color="green"><h2>This is a DIV!</h2></font>
<div id="divResult" style="width: 200px; height: 200px; overflow: auto;" ></div>
</div>
<input name="innerHTML" value="innerHTML" type="button" OnClick="alert(div.innerHTML);">
<input name="outerHTML" value="outerHTML" type="button" OnClick="alert(div.outerHTML);">

调试到第二次的时候,无论是outer还是inner,都提示缺少对象。document.getElementById("divResult")对象为null。
回复
coco_ke 2010-11-15
比如说你这样:

<div id="div">
<div id="divResult" style="width: 200px; height: 200px; overflow: auto;" ></div>
</div>
<div id="strDisp">strdisp</div>
<input name="innerHTML" value="innerHTML" type="button" OnClick="alert(div.innerHTML);">
<input name="outerHTML" value="outerHTML" type="button" OnClick="alert(div.outerHTML);">
<input id="Button1" type="button" value="干掉divResult并换成Strdisp这个元素" onclick="javascript:document.getElementById('divResult').outerHTML = document.getElementById('strDisp');" />

回复
ipkqmc 2010-11-12
[Quote=引用 5 楼 coco_ke 的回复:]
引用 4 楼 snowmagic 的回复:

用innerHtml试试,outterHtml包括他自己

估计outerHTML = strDisp;的时候,Div被干掉了
[/Quote]同意楼上人们的说法。
回复
coco_ke 2010-11-12
不一样,显示的信息一个有Div,一个没有
使用document.getElementById("divResult").outerHTML = strDisp;的时候,Div被干掉了,再接着找这个Div就没了
如果document.getElementById("divResult").innerHTML= strDisp;那么只是Div里面的东西被干掉了,Div还在,再找这个Div就可以找到了
回复
Squall008 2010-11-12
[Quote=引用 6 楼 coco_ke 的回复:]
HTML code

<div id="div"><input name="button" value="Button" type="button"><font color="green"><h2>This is a DIV!</h2></font></div>
<input name="innerHTML" value="innerHTML" type="button" OnClick="……
[/Quote]

这个我放在我的div后面了。显示正常,我第二次查询后,也可以正常弹出提示:
<div id=div><input name=button value=Button type=button><font color=green><h2>This is a DIV!</h2></font></div>


两个button点击后,弹出的都是一样的提示。

是应该这样调试吗??
回复
Squall008 2010-11-12
[Quote=引用 3 楼 gongsun 的回复:]
不清楚 你想搞什么。

你为什么要把xml下载到本地? 防止断网?

如果不需要,xml生成在服务器就可以了,然后把索引和对应值插入缓存,方便查询。
[/Quote]、


asp服务器的网站,我不能修改。只能对返回的xml进行操作。这是软件商当初设计的
我是楼主朋友
回复
Squall008 2010-11-12
[Quote=引用 5 楼 coco_ke 的回复:]
引用 4 楼 snowmagic 的回复:

用innerHtml试试,outterHtml包括他自己

估计outerHTML = strDisp;的时候,Div被干掉了
[/Quote]

对,innerHtml也不行,因为div找不到了
回复
coco_ke 2010-11-11

<div id="div"><input name="button" value="Button" type="button"><font color="green"><h2>This is a DIV!</h2></font></div>
<input name="innerHTML" value="innerHTML" type="button" OnClick="alert(div.innerHTML);">
<input name="outerHTML" value="outerHTML" type="button" OnClick="alert(div.outerHTML);">

测试一下
回复
coco_ke 2010-11-11
[Quote=引用 4 楼 snowmagic 的回复:]

用innerHtml试试,outterHtml包括他自己
[/Quote]
估计outerHTML = strDisp;的时候,Div被干掉了
回复
snowmagic 2010-11-11
用innerHtml试试,outterHtml包括他自己
回复
gongsun 2010-11-11
不清楚 你想搞什么。

你为什么要把xml下载到本地? 防止断网?

如果不需要,xml生成在服务器就可以了,然后把索引和对应值插入缓存,方便查询。
回复
Squall008 2010-11-11
我也遇到这种问题,等待答案
回复
发帖
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2010-11-11 04:44
社区公告
暂无公告