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?
IE为您使用的每个元素ID创建它自己的全局变量。所以问题是,IE已经创建了自己的变量txtValoreCatastale。通过在它前面添加var,你告诉IE在你的函数范围内它是一个局部变量,所以IE允许它。如果你把它叫做someOtherVariableName这个名字,它会在前面没有var的情况下工作。
呃...为什么这不起作用? http://jsfiddle.net/6YjXt/2/ – markzzz 2012-02-14 10:54:05
事实上,它应该打印(与警报)'0,00欧元' – markzzz 2012-02-14 10:54:29
它不工作,因为IE不会把它变成一个jQuery对象。它是一个DOM元素。所以如果你愿意,你可以通过做$(txtValoreCatastale)来使它成为一个jQuery对象。或者如果你想在IE创建时使用它,可以像这样得到HTML:txtValoreCatastale.innerHTML。 – davidethell 2012-02-14 11:07:20
只是一个快速的想法:当你用一个id指定一个DIV时,它将成为一个具有该名称的全局变量。所以你已经有了一个名为txtValoreCatastale的全局变量,它是一个DOM元素。如果您更改ID或变量名称,它应该可以正常工作。
+1,正确回答我几分钟。 – davidethell 2012-02-14 10:39:28
IE和Chrome为具有ID的每个元素创建一个全局变量。看来你不能直接覆盖它('window.txtValoreCatastale1 = ...'),但使用'var'似乎绕过了这一点。 – 2012-02-14 10:35:10