javascript - DOM 准备好后 Jquery 未定义元素

标签 javascript jquery html undefined document-ready

我尝试在 DOM 准备好后运行一个方法,但无法访问该元素。它返回为未定义。代码如下。我知道该元素是可访问的,因为代码在 DOM 元素处理良好后运行。单独的 js 文件中的警报未定义。 html 底部的警报返回正确的值。

HTML

<%@ Master Language="C#" inherits="test.master"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html> 
    <head runat="server">
        <title>test</title>
        <link rel="Stylesheet" href="css/master.css" />
        <script type="text/javascript" src="./javascript/jquery-1.10.2.js"></script>
        <script type="text/javascript" src="./javascript/master.js"></script>
        <script type="text/javascript">
            $(ajaxStuff('<%= varthing %>'));
        </script>
    </head>
    <body>
        <div id="wrapper">
            <div id="hdr">
                <div id="hdr_logo">
                    <img alt="Logo" id="hdr_logo_img" src="images/logo.png" />
                </div>
                <div id="hdr_toolslct">
                    <div id="hdr_toolslct_wrpr">
                        <span id="hdr_toolslct_cursys"><span id="hdr_toolslct_cursys_payer" runat="server"></span> - <span id="hdr_toolslct_cursys_prov"></span></span><br />
                        Hello <span id="hdr_toolslct_name" class="hdr_toolslct_name" runat="server"></span>!&nbsp;&nbsp;
                        Thing1:&nbsp;
                        <select id="hdr_toolslct_gp" runat="server">
                        </select>
                        &nbsp;&nbsp;
                        Thing2:&nbsp;
                        <span id="hdr_toolslct_prov_wrpr"></span>
                    </div>
                </div>
            </div>
            <div id="nav" class="nav" runat="server">
                <div id="nav_home" class="nav_tab">Home</div>
                <div id="nav_worklist" class="nav_tab">Worklist</div>
                <div id="nav_reporting" class="nav_tab">Reporting</div>
                <div id="nav_splits" class="nav_tab">Splits</div>
                <div id="nav_users" class="nav_tab">Users</div>
                <div id="nav_import" class="nav_tab">Import</div>
            </div>
            <div id="cntnt">
                <asp:ContentPlaceHolder id="cntnt_phldr" runat="server">
                </asp:ContentPlaceHolder>
            </div>
            <div id="ftr">
                If you experience issues with this tool, please stop using it. I'm not going to help.
            </div>
        </div>
        <script type="text/javascript">
            alert($("#ftr").html());
        </script>
    </body>
</html>

Javascript

function ajaxStuff(vartest) {
    alert($("#ftr").html());
}

查看源

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html> 
    <head><title>
    test
</title><link rel="Stylesheet" href="css/master.css" />
        <script type="text/javascript" src="./javascript/jquery-1.10.2.js"></script>
        <script type="text/javascript" src="./javascript/master.js"></script>
        <script type="text/javascript">
            $(ajaxStuff('no'));
        </script>
    </head>
    <body>
        <div id="wrapper">
            <div id="hdr">
                <div id="hdr_logo">
                    <img alt="Logo" id="hdr_logo_img" src="images/logo.png" />
                </div>
                <div id="hdr_toolslct">
                    <div id="hdr_toolslct_wrpr">
                        <span id="hdr_toolslct_cursys"><span id="ctl00_hdr_toolslct_cursys_payer">Mcaid</span> - <span id="hdr_toolslct_cursys_prov"></span></span><br />
                        Hello <span id="ctl00_hdr_toolslct_name" class="hdr_toolslct_name">Name Name</span>!&nbsp;&nbsp;
                        Thing1:&nbsp;
                        <select name="ctl00$hdr_toolslct_gp" id="ctl00_hdr_toolslct_gp">
    <option selected="selected" value="OP1">Option 1</option>
    <option value="OP2">Option 2</option>
</select>
                        &nbsp;&nbsp;
                        Thing2:&nbsp;
                        <span id="hdr_toolslct_prov_wrpr"></span>
                    </div>
                </div>
            </div>
            <div id="ctl00_nav" class="nav">
                <div id="nav_home" class="nav_tab">Home</div>
                <div id="nav_worklist" class="nav_tab">Worklist</div>
                <div id="nav_reporting" class="nav_tab">Reporting</div>
                <div id="nav_splits" class="nav_tab">Splits</div>
                <div id="nav_users" class="nav_tab">Users</div>
                <div id="nav_import" class="nav_tab">Import</div>
            </div>
            <div id="cntnt">




            </div>
            <div id="ftr">
                If you experience issues with this tool, please stop using it. I'm not going to help
            </div>
        </div>
        <script type="text/javascript">
            alert($("#ftr").html());
        </script>
    </body>
</html>

最佳答案

请记住,您未定义的原因是因为函数 ajaxStuff 被立即调用。如果您使用以下任何一种形式,它应该按预期工作。 ()(arguments) 立即调用该函数:

$(ajaxStuff);

或者

$(document).ready(ajaxStuff);

或者

$(function() {
    ajaxStuff('no');
});

或者

$(document).ready(function() {
    ajaxStuff('no');
});

JS FIDDLE DEMO

关于javascript - DOM 准备好后 Jquery 未定义元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24146908/

相关文章:

javascript - 从显示 :none to display:block? 向下滑动动画

javascript - webex 干扰 Web 应用程序

javascript - 获取 GeoJSON 属性

javascript - if(){do{};while();} 和 while{} 完全一样吗

javascript - 如何在激活另一个元素时关闭一个元素?

javascript - DurandalJs : A generic solution to put focus to the first input element on the composed view

javascript - 奇怪的数据属性 bool 问题

javascript - 页面加载后的 Kendo 数据源

javascript - 无法通过JS更新隐藏字段

Javascript 将数据导出到 CSV 文件