Javascript HTML onload不工作
我试图使用html onload事件来触发javascript,但不起作用。原代码为: html: } 为了进行测试,我将html更改为:Javascript HTML onload不工作,javascript,jquery,html,Javascript,Jquery,Html,我试图使用html onload事件来触发javascript,但不起作用。原代码为: html: } 为了进行测试,我将html更改为: <div id='map' onload="alert('test');"></div> 有人能告诉我为什么没有工作吗?首先,onload属性对于div标记无效。您很可能打算将onload放在body标记中 不幸的是,这不是唯一的问题 在onLoad中,您正在引用generateMap,就好像它是一个具有方法createMap的
<div id='map' onload="alert('test');"></div>
有人能告诉我为什么没有工作吗?首先,
onload
属性对于div
标记无效。您很可能打算将onload
放在body
标记中
不幸的是,这不是唯一的问题
在onLoad
中,您正在引用generateMap
,就好像它是一个具有方法createMap
的对象一样。然而,情况并非如此。您已将generateMap
分配给匿名函数
要使代码正常工作,generateMap
需要是方法为createMap
的对象
首先,您只需将其设置为对象:
var generateMap = {
createMap: function(){
console.log(this.attr('id'));
element = this.attr('id');
navigator.geolocation.getCurrentPosition(initialize);
}
};
或如果出于任何原因需要保留匿名函数,可以使用立即执行的函数:
var generateMap = (function(){
return {
createMap: function(){
console.log(this.attr('id'));
element = this.attr('id');
navigator.geolocation.getCurrentPosition(initialize);
}
})();
div没有onload事件。您可以在div标记之后使用script标记来模拟onload行为 用这个
var generateMap={
createMap:函数(元素){
navigator.geolocation.getCurrentPosition(初始化);
}
};
generateMap.createMap('map');
假设使用铬
div
标记没有onload
事件。检查以下两个JSIDdle:
不起作用:
作品:
我不知道加载div时触发事件的方法,除非它是通过jQuery.load()加载的,在这种情况下,您可以使用回调。如果您使用jQuery,那么我喜欢以下函数,它将onload功能添加到所有标记中:
$(document).ready (function () {
jQuery.each ($("[onload]"), function (index, item) {
$(item).prop ("onload").call (item);
return false;
});
});
什么是“初始化”?
generateMap.createMap('map')
需要在onload
中,或者,由于OP已经指示使用jQuery,一个$(document).ready(function(){})代码>函数。在body标记之后立即放置脚本标记并不能确保JavaScript在页面加载后执行。拥有脚本标记将确保在加载div后立即加载脚本-这就是解决方案和ask。传递div id是他调用的方法中所需的全部。我不推荐这样的技术,但是如果您打算在仅加载div(即,不是整个文档)之后执行createMap
,那就行了。我同意你的看法,Elliot-这不是一个最佳的方法,但绝对是最简单的方法。谢谢,我只是想知道面向对象javascript的步骤。我注意到这会反复调用body onload(以一个可怕的循环结束),所以有必要将这一行添加到代码的开头“each”函数:if(新数组(“body”、“iframe”、“iframe”、“link”、“style”)。包含($(项).prop(“标记名”))返回值;
var generateMap = (function(){
return {
createMap: function(){
console.log(this.attr('id'));
element = this.attr('id');
navigator.geolocation.getCurrentPosition(initialize);
}
})();
<head>
<meta charset="utf-8">
<script type="text/javascript">
var generateMap = {
createMap: function(element) {
navigator.geolocation.getCurrentPosition(initialize);
}
};
</script>
</head>
<body>
<div id='map'></div>
<script type="text/javascript">
generateMap.createMap('map');
</script>
</body>
$(document).ready (function () {
jQuery.each ($("[onload]"), function (index, item) {
$(item).prop ("onload").call (item);
return false;
});
});