【问题标题】:Javascript pageLoad function not working with master and content pageJavascript pageLoad函数不适用于主页面和内容页面
【发布时间】:2011-06-17 00:45:04
【问题描述】:

我在母版页中使用带有脚本管理器的母版页和内容页。内容页面应该显示搜索查询的结果以及与这些结果相关的一些图像。为了提高响应时间,我使用内容页面的 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:&nbsp;&nbsp;<%# 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 页面执行此操作,则此方法可以正常工作。 有谁知道我做错了什么或者我需要做些什么才能使这个与母版和内容页面一起工作?

谢谢,

【问题讨论】:

    标签: asp.net master pageload


    【解决方案1】:

    搜索您的 html 并确保 id 在您的页面中仅出现一次。 这是通过 iframe 内部的任何更改还是单独的表单?

    【讨论】:

    • 我浏览了运行页面时生成的整个 html。图像面板 div 具有名为 SearchResultsContent_webRepeater_ImagePanel_X 的唯一 ID,其中 X 是表示其索引的数字。代码在内容页面中。我没有使用任何 iframe。我只是想知道如果没有母版页但在使用母版页时无法检测到图像面板 div,为什么相同的逻辑会起作用。
    • 试试这个 - 在页面的最底部放置一个按钮。分配其 onclick="pageLoad()" 并查看是否有效。等到页面完全加载并尝试。我想知道这是否是代码位置以及何时调用的问题。
    • 感谢您的建议。我添加了一个“if”语句来检查图像面板是否可用。此外,将代码移动到页面的下部似乎会产生更少的元素未找到错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    • 1970-01-01
    • 2014-01-11
    • 2017-10-03
    相关资源
    最近更新 更多