2010-04-02 68 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