javascript - HTML 加载不工作

标签 javascript jquery html

我正在尝试使用 html onload 事件来触发 javascript,但无法正常工作。原代码为:

html:

<div id='map' onload="generateMap.createMap();"></div>

JS:

var generateMap = function(){
return{
    createMap: function(){
        console.log(this.attr('id'));
        element = this.attr('id');
        navigator.geolocation.getCurrentPosition(initialize);
    }
};

为了测试,我将 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);
    }
})();

关于javascript - HTML 加载不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25516905/

相关文章:

javascript - 错误: Invalid value for <path> attribute -- During a d3 Projection Transition -- Infinity & NaN

javascript - backbone.js 和 el 属性

Javascript嵌套数组单元素修改转换为整个数组修改

javascript - 清空整个邻居 div 部分

Javascript 粘性菜单问题

javascript - 同一空间不同方 block 淡入/淡出的正确方法

javascript - Angular ,element.bind 特定的 div

javascript - Jquery删除带有特定标签的链接以及该链接后的整个文本

javascript - 如何将动态生成的 JSON 对象集成到另一个对象中?

javascript - [Vue警告] : Property or method "first" and "last" is not defined