Javascript全局对象在函数

时间:2018-02-26 23:51:06

标签: javascript object scope

我遇到了一个问题:

var page = document.getElementById('example');
var p1_box = {
    x: 20,
    y: 20,
    width: 560,
    height: 400
};
page.innerHTML = (p1_box.x);

使用上面的代码时,页面会显示20,但是当我使用此代码时:

var page = document.getElementById('example');
var p1_box = {
    x: 20,
    y: 20,
    width: 560,
    height: 400
};
function test(){
    page.innerHTML = (p1_box.x);
}

(然后运行测试功能) 它没有用。我反而得到了这个错误(在Chrome开发者控制台中:):

  

未捕获的TypeError:无法读取属性' x'未定义的

谁知道我做错了什么?据我所知,这段代码没有任何问题,但是当我被展示时,它没有用。

[我包含了'范围'标记这个问题,因为我认为它可能与那个问题有关]

编辑: 我不愿意提供完整的代码,但似乎我会。 问题可能在于它目前的混乱程度。 我从我制作JavaScript的游戏中复制了代码并正在创建一个新代码。 因此,如果您想知道为什么这么多代码被注释掉,那就是原因。 希望有了这个问题就会变得明显。

首先关闭:这里是加载的网页: http://oldforgeinn.ddns.net/games/?game=battleship 这是源代码: http://oldforgeinn.ddns.net/scripts/SO_file.js

提醒一下,上面的代码块是示例,函数/变量名称与我的代码中的实际名称不匹配。

在这种情况下,test()将表示draw_gui()函数,而页面变量并不重要,因为这个问题的重点是x未定义的原因,而innerHTML部分只是为了明确确认。

1 个答案:

答案 0 :(得分:4)

该代码工作正常。在其余代码中,您必须有其他错误。这是其中的一小部分工作:



var page = document.getElementById('example');
var p1_box = {
    x: 20,
    y: 20,
    width: 560,
    height: 400
};
function test(){
    page.innerHTML = (p1_box.x);
}

test();

<div id="example"></div>
&#13;
&#13;
&#13;