我在jquery加载完成后设置输入时遇到问题。我在本网站上尝试了以下帖子,但没有成功。
无论我做什么,我都会收到以下错误"无法设置属性'值'未定义或空引用"因为在调用setValues时没有加载输入。
下面是我的代码的简化版本(我已尝试注释掉了一些内容)。我在IE11标准模式下运行它(没有兼容性视图)。任何指导/帮助表示赞赏。 基本上,如何加载输入以调用setValues?:
frame1.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<input name="input1" id="input1" />
<input name="input2" id="input2" />
</body>
</html>
parentFrame.html
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-1.10.2.min.js"> </script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<div id="div1" style="width:100px;height:100px;border:2px black solid;"> </div>
<div id="div2"> </div>
</body>
<script defer>
function setValues() {
window.document.getElementById("input1").value="TEST";
window.document.getElementById("input2").value="TEST";
}
$(document).ready(function(){
//$("#div1").load("frame1.html", setValues);
$("#div1").load("frame1.html");
});
$(window).load(setValues);
//document.addEventListener( "DOMContentLoaded", setValues, false )
/*
$("div").ready(function(){
window.document.getElementById("input1").value="TEST";
window.document.getElementById("input2").value="TEST";
});
*/
</script>
</html>
答案 0 :(得分:4)
您不使用已发布的第一个主题的回调功能。
function setValues() {
window.document.getElementById("input1").value="TEST";
window.document.getElementById("input2").value="TEST";
}
$(document).ready(function(){
$("#div1").load("frame1.html", function(){
setValues();
//do more stuff after load
});
});
一些注释:
$(window).load(setValues);
此功能在$(document).ready()
之后立即调用,因此可能会在load()
上的#div1
事件之前触发。你必须删除这一行。
此外,你不应该再加载一个带有整个html骨架的元素,而只是加载体内的元素。
无论如何, setValues()
也应该使用jQuery函数。
修改:
如果您甚至看不到加载的内容,则在尝试使用load()
时会发生错误。当您尝试获取没有Web服务器的html文件时,它将返回错误。 (C:/path/file.html)
XMLHttpRequest无法加载file:/// C:/path/frame1.html。交叉源请求仅支持协议方案:http,数据,chrome,chrome-extension,https,chrome-extension-resource。
我想你会遇到同样的问题。这是因为您不使用Web服务器(您通过文件路径而不是域/ localhost请求文件)。您必须使用 http请求。使用 apache 等服务器(或捆绑在xampp中)将解决您的问题。