IE无法管理“全局”变量?

IE无法管理“全局”变量?

问题描述:

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

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

只是一个快速的想法:当你用一个id指定一个DIV时,它将成为一个具有该名称的全局变量。所以你已经有了一个名为txtValoreCatastale的全局变量,它是一个DOM元素。如果您更改ID或变量名称,它应该可以正常工作。

+0

+1,正确回答我几分钟。 – davidethell 2012-02-14 10:39:28