javascript:eval在IE和firefox中的不同

今天又碰到一件郁闷的事,让一个小小的eval给绊倒了.究竟是怎么回事呢?请听我详解.

今天做项目,有一个网页在ie下正常工作,但在火狐下,他居然罢工.我仔细检查了一下网页上的javascript,也没发现什么不兼容的地方.不得已,我祭出了法宝级的工具--fireBug.在FireBug中,我设置了断点,按F10单步调试,单只见走到一半,网页闪了一下,便结束了.郁闷.仔细观察了一下代码,发现在此地方,fireBug停下:  var Size_List=eval("Form1.Size_List_"+suit_array_s[0].trim())...... 我想难不成firefox不支持根据name取值,于是我做了一个实验,实验html内容如下:

<head>
<script type="text/javascript">
function test()
{
  alert(form1.txt1.value);
}
</script>
</head>
<form name=form1 action="" onSubmit="test();" method=post>
<input type="text" name="txt1">
<input type="submit" value=提交>
</form>

但是测试发现,在ie和firefox中都很正常,郁闷啊.究竟哪里出错?难道是eval,我又改之为 alert(eval("form1.txt1.value")),仍然正常...................无限郁闷中.........

最后我使出我最...厉害的杀手锏,在脚本中添加如下代码:

window.οnerrοr=reportError;
function reportError(msg,url,line) {
      var str = "You have found an error as below: \n\n";
      str += "Err: " + msg + " on line: " + line;
     alert(str);
     return true;
}

错误终于显出原形: 

Form1未定义?不可能.网页中有一个form,name和id都是Form1.怎能没定义?!将测试html改为

<head>
<script type="text/javascript">
function test()
{
  alert("form1.txt"+1+".value");
}
</script>
</head>
<form name=form1 action="" onSubmit="test();" method=post>
<input type="text" name="txt1">
<input type="submit" value=提交>
</form>

之后,再在ff中试一下,出错.终于发现错误的原因,firefox下,如果写成""+变量,再用eval后,ff无法正确执行,在ie中正常,郁闷,有没有解决方法呢?有!

改之为

<head>
<script type="text/javascript">
function test()
{
  alert("document.form1.txt"+1+".value");
}
</script>
</head>
<form name=form1 action="" onSubmit="test();" method=post>
<input type="text" name="txt1">
<input type="submit" value=提交>
</form>

在form1前面,加一个"document.",再测试,正常,问题解决..............郁闷,为什么"form1.XX"可以,为什么"form1."+变量不行,而"document.form1."+变量又可以..........真让人糊涂啊,这javascript,这firefox...........

转载于:https://www.cnblogs.com/yuanshangcao/archive/2008/08/07/1262750.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值