当jquery load()完成

时间:2015-07-09 20:40:51

标签: javascript jquery html

我在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>

1 个答案:

答案 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中)将解决您的问题。