2012-02-14 57 views
0

this代碼:IE無法管理「全局」變量?

<div class="riga" style="border-top:0;"> 
    <div class="col3" id="txtValoreCatastale">0,00 euro</div>    
</div> 

<script type="text/javascript"> 
    txtValoreCatastale = $('#txtValoreCatastale'); 
</script> 

看來我得到一個錯誤:

SCRIPT438: Object doesn't support this property or method 
show, Row 33 Char 4 

即會布羅克(在我的整個原代碼)一些我的腳本! 但是,如果我寫道:

var txtValoreCatastale = $('#txtValoreCatastale'); 

它完美的工作。

爲什麼會這樣?另一個巨大的bug?

+1

IE和Chrome爲具有ID的每個元素創建一個全局變量。看來你不能直接覆蓋它('window.txtValoreCatastale1 = ...'),但使用'var'似乎繞過了這一點。 – 2012-02-14 10:35:10

回答

1

IE爲您使用的每個元素ID創建它自己的全局變量。所以問題是,IE已經創建了自己的變量txtValoreCatastale。通過在它前面添加var,你告訴IE在你的函數範圍內它是一個局部變量,所以IE允許它。如果你把它叫做someOtherVariableName這個名字,它會在前面沒有var的情況下工作。

+1

呃...爲什麼這不起作用? http://jsfiddle.net/6YjXt/2/ – markzzz 2012-02-14 10:54:05

+0

事實上,它應該打印(與警報)'0,00歐元' – markzzz 2012-02-14 10:54:29

+0

它不工作,因爲IE不會把它變成一個jQuery對象。它是一個DOM元素。所以如果你願意,你可以通過做$(txtValoreCatastale)來使它成爲一個jQuery對象。或者如果你想在IE創建時使用它,可以像這樣得到HTML:txtValoreCatastale.innerHTML。 – davidethell 2012-02-14 11:07:20

4

只是一個快速的想法:當你用一個id指定一個DIV時,它將成爲一個具有該名稱的全局變量。所以你已經有了一個名爲txtValoreCatastale的全局變量,它是一個DOM元素。如果您更改ID或變量名稱,它應該可以正常工作。

+0

+1,正確回答我幾分鐘。 – davidethell 2012-02-14 10:39:28