• html中的id字符串,在ie等浏览器中被当作dom对象


    问题:
    一些新手经常会把忘记生命变量,而直接使用。比如未var a;直接给a=2; 这在firefox下,没有问题。在chrome中也没啥大问题。但是在ie6中,如果在dom中有个id=“a”的元素。这时候,赋值a=2;就会报js错误。

    问题代码:

    <div id="obj1"></div>
    
    <script type="text/javascript">
    alert(typeof obj1);
    obj1=2;
    </script>
    

    以上代码:
    在firefox下。                         obj1是undefined。obj1 = 2。         这个好理解。
    在ie6-8下。                           obj1是object。     obj1=2赋值出错。因为类型错误啊。我猜测因为ie对dom的实现是com啊。所以有类型啊。
    在chorme/opera/safari下。      obj1是object。     obj1= 2赋值成功。好像很完美的样子。

    firefox的做法。明显是最规范的。从理论上说就是这样的。
    ie6的做法。让obj1在js中直接使用,确实是方便了。但是这明显不符合语法。很容易让人误解。所以这两方面都有优缺点。
    chrome的做法。既让人可以方便的使用obj1.又可以赋值。确保了不会出错。好像很完美一样。但是对于不知道这个用法的人来说,某些情况下就会出现问题了。

    解决办法尝试1

    <div id="obj1"></div>
    
    <script type="text/javascript">
    var obj1;
    alert(typef obj1);
    obj1 = 2;
    </script>

    firefox,不用说。很标准的。 undefined,赋值成功
    opera,  也没什么问题,undefined,赋值成功
    ie6-8,   没什么问题,undefined,赋值成功
    chrome/safari          obj,赋值成功

    真是蛋疼+二逼的chrome啊。本来通过var声明就可以解决的问题。被搞成个鸟样。

    最后办法:
    因为二逼chrome/safari的存在,我们只能给obj赋初始值了。

  • 相关阅读:
    让你的网站(MAXCMS4_0)按地区、年份、语言生成分页面(已经修正)
    IPTV
    超简单,MAX普通版改为资源版方法
    Jmter操作数据库
    JMter中添加断点和关联
    jmeter返回报文乱码问题
    Jmter安装和配置
    JMter压力测试
    今天注册了
    不能登陆后删除Cookies解决
  • 原文地址:https://www.cnblogs.com/lunalord/p/2447905.html
Copyright © 2020-2023  润新知