我在主页面中使用带有scriptmanager的主页面和内容页面。内容页面应该显示搜索查询的结果以及与这些结果相关的一些图像。为了缩短响应时间,我使用内容页面的aspx文件中定义的javascript pageLoad()函数加载图像。使用放置在更新面板内的转发器控件显示结果。转发器控件发出一个div元素来保存结果描述,另一个div元素保存图像。最初图像div为空。放置在内容页面部分的pageLoad函数如下所示。
function pageLoad() {
var anchors = document.getElementsByName("resultAnchor");
var count = anchors.length;
var href = "";
for (var i = 0; i < count; i++) {
href = anchors[i].href;
if ((i % 2) == 0) {
document.getElementById("SearchResultsContent_webRepeater_ImagePanel_" + i).innerHtml = href;
}
else {
document.getElementById("SearchResultsContent_webRepeater_altImagePanel_" + i).innerHtml = href;
}
}
}
转发器控制代码如下所示。
<asp:Repeater ID="webRepeater" runat="server" >
<ItemTemplate>
<div id="resultControl" class="resultControl" runat="server">
<div class="headerImage">
<img src='<%# Eval("Favicon") %>' alt="" class="favicon"/>
</div>
<div class="resultInfo">
<a href='<%# Eval("Url") %>' class="resultTitle" name="resultAnchor"><%# Eval("Title") %></a>
<br />
<span class="resultDescription"><%# Eval("Description") %></span>
<br />
<span class="resultDisplayLink"><%# Eval("DisplayLink") %></span>
<span class="resultFoundOn">Found On: <%# Eval("FoundOn") %></span>
<br />
<div id="imagePanel" class="ImagePanel" runat="server" />
</div>
<br />
</div>
</ItemTemplate>
//与ItemTemplate相同,图像面板名为altImagePanel
SearchResultsContent是放置转发器的asp:Content的ID。问题是pageLoad中设置ImagePanel的innerHtml的语句抛出异常,表示找不到SearchResultsContent_webRepeater_ImagePanel_X。我浏览了HTML源代码,它将ImagePanel的ID显示为SearchResultsContent_webRepeater_ImagePanel_X,其中X是一个数字。但是,如果我使用没有母版页的单个ASPX页面执行此操作,此方法可以正常工作。 有没有人知道我做错了什么或者我需要做些什么来使这个工作与主页和内容页面一起工作?
谢谢,
答案 0 :(得分:1)
搜索您的html并确保该ID只出现在您的网页中一次。 这是通过iframe或单独的表单内的任何更改吗?