zoukankan      html  css  js  c++  java
  • 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赋初始值了。

  • 相关阅读:
    python_07
    python_01
    python_06
    JDBC批处理
    JDBC处理大数据
    利用PreparedStatement预防SQL注入
    利用工厂模式实现serviec层和dao层解耦
    jdbc入门
    EL表达式详解
    购物车案列
  • 原文地址:https://www.cnblogs.com/lunalord/p/2447905.html
Copyright © 2011-2022 走看看