getAttribute返回[object window]而不是Value

时间:2013-04-09 18:41:16

标签: javascript dom firebug

我正在使用JavaScript向DOM文档写出一组分层元素,并在FireFox 20.0上使用FireBug进行调试。根据我在使用FireBug检查DOM时看到的内容,似乎写出来的很好。感兴趣的部分具有以下结构。

childNodes NodeList[ulcorner, lrcorner]
- 0 ulcorner    
    accessKey  ""
    accessKeyLabel""
    - attributes    [xcoord="134", ycoord="49"]
    + 0 xcoord="134"
    + 1 ycoord="49"

然而,当我打电话

var ulCorner=upperElement.getElementsByTagName("ulCorner")[0];
top=ulCorner.getAttribute("yCoord");
left=ulCorner.getAttribute("xCoord");
console.log('top=' + top + ', left=' + left);

我得到了

top=[object Window], left=134

为什么顶部设置为[对象窗口]而不是49?

2 个答案:

答案 0 :(得分:4)

topwindow对象上的现有属性,并且不可写 https://developer.mozilla.org/fr/docs/DOM/window.top

var ulCorner=upperElement.getElementsByTagName("ulCorner")[0];
var top=ulCorner.getAttribute("yCoord");
var left=ulCorner.getAttribute("xCoord");
console.log('top=' + top + ', left=' + left);

以上内容应该有效,但不建议隐藏现有的全局变量,我强烈建议您选择另一个变量名,除非您的代码不在全局范围内运行。

答案 1 :(得分:1)

top=ulCorner.getAttribute("yCoord");

您在这里创建一个隐式(和意外)全局变量,即全局对象的属性。浏览器中的全局对象为window,而window.top不可写对窗口层次结构中最顶层窗口的引用”。因此,您的作业无效,只返回顶部window(其字符串化为"[object Window]")。

要解决此问题,只需添加var keyword

即可
var ulCorner=upperElement.getElementsByTagName("ulCorner")[0];
var top=ulCorner.getAttribute("yCoord");
var left=ulCorner.getAttribute("xCoord");

或使用多个var语句:

var ulCorner=upperElement.getElementsByTagName("ulCorner")[0],
    top=ulCorner.getAttribute("yCoord"),
    left=ulCorner.getAttribute("xCoord");