Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript DOM就绪后的Jquery未定义元素_Javascript_Jquery_Html_Undefined_Document Ready - Fatal编程技术网

Javascript DOM就绪后的Jquery未定义元素

Javascript DOM就绪后的Jquery未定义元素,javascript,jquery,html,undefined,document-ready,Javascript,Jquery,Html,Undefined,Document Ready,我试图在DOM就绪后运行一个方法,但无法访问该元素。它以未定义的形式返回。代码如下。我知道元素是可访问的,因为在DOM元素之后运行的代码处理得很好。单独js文件中的警报返回时未定义。html底部的警报返回正确的值 HTML 视源 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head><titl

我试图在DOM就绪后运行一个方法,但无法访问该元素。它以未定义的形式返回。代码如下。我知道元素是可访问的,因为在DOM元素之后运行的代码处理得很好。单独js文件中的警报返回时未定义。html底部的警报返回正确的值

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(‘否’);
Mcaid-
你好,名字! 事情1: 选择1 选择2 事情2: 家 工作表 报告 分裂 使用者 进口 如果您遇到此工具的问题,请停止使用。我不会帮你的 警报($(“#ftr”).html();

HTML

<div id="test">hello</div>

您忘记了jQuery就绪事件:

您的代码可能适用于:

$( document ).ready(function() {
 // Handler for .ready() called.
 alert($("#ftr").html());
});

在JavaScript部分

更新:

由于这不起作用,您应该尝试分析生成的DOM:

$(function() {
   // Handler for .ready() called.
   console.log($("body").html());
});

也许有人换了身份证?或者类似的?您告诉我们:D

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

$(ajaxStuff);


请包装
$(ajaxStuff(“”))和jQuery document ready回调。您忘记了
$(document)ready(…)
@AlirezaAhmadi也这么做了result@AlirezaAhmadi,
$(ajaxStuff(“”))已正确包装在DOM ready中…请尝试直接在此处警告
的值。我当前的语法遵循第二个示例。我也试过第一种。我并没有将它卸载到一个单独的文件中,尝试了那个,同样的结果。这很奇怪。。。您的ViewResource完全正确。如果你在fiddle上试用它,它会起作用:S.你是在使用ASP.NET和C#吗?它的C#部件上是否有任何“加载”?也许你必须触发那个事件。。但仍然很奇怪,因为结果html是正确的:我没有使用C#中的加载,但我使用ASP.NET和C#codebehind。我在服务器端做的只是一些处理来构建选择列表。我认为这与C#codebehind有关,但我不知道问题出在哪里,也许这解决了您的问题。您应该添加C#和ASP.NET标记,以便在此处获得.NET专家!:这基本上就是我所做的。我的就绪事件不在单独的文件中。我也试过了,结果没有改变。@steventnorris你能把你的代码放在JSFIDLE中吗?使用viewsource和js,它似乎可以在JSFIDLE中工作,但我仍然得到一个未定义的代码,好像它没有在DOM上运行一样,但在这之前。极好的那很好。现在,为什么jquery/javascript是这样工作的?这似乎很不直观。这只是javascript/jquery的一个奇怪的怪癖,还是它有它的用途?大多数人在DOM ready中“拼写”出
函数(){…}
,如上面的第3和第4个示例所示;因此,他们不会介入此类问题。但是,当您不“拼写”它时,必须小心不要使用
()
,因为这就是您调用函数的方式。我认为这可能会有所帮助:,
$( document ).ready(function() {
 // Handler for .ready() called.
 alert($("#ftr").html());
});
$(function() {
   // Handler for .ready() called.
   alert($("#ftr").html());
});
$(function() {
   // Handler for .ready() called.
   console.log($("body").html());
});
$(ajaxStuff);
$(document).ready(ajaxStuff);
$(function() {
    ajaxStuff('no');
});
$(document).ready(function() {
    ajaxStuff('no');
});