Javascript IE8奇怪的行为,我的问题还是错误?

Javascript IE8奇怪的行为,我的问题还是错误?,javascript,internet-explorer-8,Javascript,Internet Explorer 8,好了,伙计们,这很有趣 我正在测试这个页面 在IE8/WindowsXP上 代码如下: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="content-language" content="en"> <title&g

好了,伙计们,这很有趣

我正在测试这个页面

在IE8/WindowsXP上

代码如下:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
    <meta charset="UTF-8" />
    <meta http-equiv="content-language" content="en">
    <title>Test</title>
</head>
<body>
<div id="thisgivesmeanerror">test</div>
<script>
    thisgivesmeanerror = 'test';
    alert('this alert won\'t be fired on my IE8, what about yours?');
</script>
</body>
</html>

试验
测试
thisgivesmeanerror='测试';
警报('此警报不会在我的IE8上触发,你的呢?');
如果我用IE8打开这个页面,我会得到一个错误。 如果我将脚本的代码更改为:

<script>
    // note that I added var prefix
    var thisgivesmeanerror = 'test';
    alert('this alert won\'t be fired on my IE8, what about yours?');
</script>

//注意,我添加了var前缀
var thisgivesmeanerror='测试';
警报('此警报不会在我的IE8上触发,你的呢?');
它很好用。 这只发生在IE7/8上,没有在IE6上测试

你觉得怎么样? 你也会这样吗?还是只是我的浏览器疯了

附加 你是说没有使用导致错误的var前缀? 对不起,伙计们,你们错了,你们没有花时间测试代码

我上传了一个test2页面 用下面的代码

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
    <meta charset="UTF-8" />
    <meta http-equiv="content-language" content="en">
    <title>Test 2</title>
</head>
<body>
<div id="thisgivesmeanerror">test</div>
<script>
    thisdoesntgiveanyerror = 'test';
    alert('This alert will be fired correcly');
</script>
</body>
</html>

测试2
测试
thisdoesntgiveanyerror='test';
警报(“将正确触发此警报”);
那很好

那么究竟是什么导致了这个错误呢?不带var前缀的变量名与DIV元素的ID具有相同的名称


这不是很奇怪吗?

您应该始终在变量声明之前加上
var
来指定它们的范围,否则您可能会发现不同浏览器之间存在不一致的行为。

您应该始终在变量声明之前加上
var
来指定它们的范围,否则您可能会发现不一致的行为不同浏览器之间。

我认为IE中的JavaScript解释器比FireFox和其他浏览器上的要严格一些,这意味着脚本在变量定义行中返回错误。将
var
放入将确保它实际上是一个变量

使用
var

詹姆斯

编辑


目前我无法访问IE,但我可以建议您将
标记更改为

我想说IE中的JavaScript解释器比FireFox和其他浏览器上的稍严格,这意味着脚本在变量定义行时返回错误。将
var
放入将确保它实际上是一个变量

使用
var

詹姆斯

编辑


我现在没法去,但是我可以建议您将
标记更改为

使用
var
来声明变量,而不是仅仅插入它们的名称

使用
var
来声明变量,而不是仅仅插入它们的名称

可能是有帮助的答案?

可能是有帮助的答案?

是的,变量的范围非常重要。如果在声明变量时不使用
var
,IE8可能会使用其他同名变量,如示例中的div id。是的,变量的范围非常重要。如果在声明变量时不使用
var
,IE8可能会使用其他同名变量,如示例中div.trusted的id,但无法解决test.html中的问题-您还应该知道,在HTML5中,te type属性不是必需的+1感谢类型提示。至于原版,恐怕我已经没有主意了。很抱歉尝试过但没有解决test.html中的问题-您还应该知道,在HTML5中,te type属性不是必需的+1感谢类型提示。至于原版,恐怕我已经没有主意了。很抱歉