有人可以告诉我为什么以下行从Dev Tool Console起作用,但在页面中不起作用,我一直保持长度为0
$("iframe[name='gridFrame']").contents().find("form[name='grid']").length;
这是页面:
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
<script type="text/javascript" src="/Scripts/jquery-3.1.1.js"></script>
<script>
$(function () {
submitThis();
function submitThis() {
var a = $("iframe[name='gridFrame']").contents().find("form[name='grid']").length;
console.log(a);
}
})
</script>
</head>
<body>
<iframe name="gridFrame" src="temp-iframe-test.html">
</iframe>
</body>
</html>
这是iframe文件:
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<form name="grid">
<input id="fname" />
</form>
</body>
</html>
您的submitthis()函数在加载其源之前要触发。这就是为什么您看到长度为0。
尝试添加: onload =" submitthis()"到您的iframe元素中,然后将提交函数移动到全局范围(从$函数出发)。
使用DEV控制台时,您的iFrame自此加载了其文件。