Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML onload不工作_Javascript_Jquery_Html - Fatal编程技术网

Javascript HTML onload不工作

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的

我试图使用html onload事件来触发javascript,但不起作用。原代码为:

html:

}

为了进行测试,我将html更改为:

<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;
    });
});