2010-04-02 44 views
1

这工作:问题通过document.getElementById


alert(document.getElementById("Container").nodeName);

但这并不:


var CurParent = document.getElementById("Container"); 
alert(CurParent.nodeName);

我使用IE7。 为什么?

+0

呃......我不确定我是否相信。当你说它“不起作用”时,你是什么意思? – Pointy 2010-04-02 19:51:00

+0

这两个片段都是相同的。问题在别处。你为什么认为第二个不起作用? HTML文档是否完全一样? – 2010-04-02 19:52:26

+0

这里有一点要注意:IE会根据“id”*或*“name”值返回该例程中的元素。 – Pointy 2010-04-02 19:54:22

回答

2

从您的最新评论,这似乎是一个变量范围界定的问题。你确定var parent真的是全球?下面将工作中,由于不正确的变量范围:

function firstThing() { 
    var parent = document.body; 
} 

function secondThing() { 
    return parent; 
} 

firstThing(); 
secondThing(); // will return undefined 

定义在最大范围的变量,你打算使用它。以下工作。

var parent; 

function firstThing() { 
    parent = document.body; 
} 

function secondThing() { 
    return parent; 
} 

firstThing(); 
secondThing(); // will return document.body 
+0

你是对的。但var parent = document.body; //不,如果声明并全局初始化。 – pokrate 2010-04-02 20:11:26

+0

不知道该评论的意思。我敢肯定的是,如果你做一个'无功父= whatever'声明在不同的范围,像函数里面,它仍然在较大范围的变量没有任何影响,因为你使用了'var'关键字。 – Matchu 2010-04-02 20:14:20