动态生成的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>
...全文
154 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
我也遇到这种问题,等待答案

62,047

社区成员

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

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

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

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