Javascript DOM就绪后的Jquery未定义元素
我试图在DOM就绪后运行一个方法,但无法访问该元素。它以未定义的形式返回。代码如下。我知道元素是可访问的,因为在DOM元素之后运行的代码处理得很好。单独js文件中的警报返回时未定义。html底部的警报返回正确的值 HTML 视源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
<!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>!
Thing1:
<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>
Thing2:
<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');
});