`

IE 内核对于执行 javascript 的几个严重 BUG

阅读更多

在写脚本的过程,有以下几个大的 BUG ,害我找答案找了 N 久。现把它写出来,希望大家少走点弯路。

 注: IE 6.0 以下版本会出现, 7.0 没测试过

一、文本转换成数字,parseInt 在 IE 中有一个严重的 BUG
        alert(parseInt("8")) → 执行结果为  0
        解决方法:改成  parseFloat("8").toFixed(0) → 保留小数点后 0 位数,即整数

二、document.getElementById 的方法执行有误
       document.all 在其它浏览器中不支持,所以我用的最多的是 document.getElementById。但是我发现,当控件的 ID 与名称相同的时候,document.getElementById 就出现错误了。例如:
       <input id="Txt_Name01" name="Txt_Name">
       <input id="Txt_Name" name="Txt_Name">
alert(document.getElementById("Txt_Name").id) 执行结果是  "Txt_Name01"
以此推断:document.getElementById 在 IE 中,先以 name 由上而下进行查找,没有找到控件的时候才以 id 进行查找。
解决方法,用另一方法代替。
document.getObjectById = function(id)
{
    if(document.all)
    {
        var obj = document.getElementById(id);
        if(obj == null){return null;}
        if(obj.id == id){return obj;}
        obj = document.getElementsByName(id);
        for(var i=0;i< obj.length;i++)
        {
            if(obj[i].id == id){return obj[i];}
        }
        return null;
    }
    else{return document.getElementById(id);}
}

三、 通过 select 节点的 innerHTML 设置下拉节点无效
        当两个 select 下拉框需要进行复制时,一个最快捷的方式就是用 innerHTML ,但 IE 的 BUG 却让我无话可说。例如:把 DDL_Dept 的下拉节点复制到 DDL_Dept02
<select id="DDL_Dept">
     <option>01</option>
     <option>02</option>
</select>
<select id="DDL_Dept02" style="width:20px">
     <option>03</option>
</select>

function CloneNode()
{
     var d1=document.getElementById("DDL_Dept");
     var d2=document.getElementById("DDL_Dept02");
    //d2.innerHTML = d1.innerHTML; 此句应该是最快的,但无效,只好变通一下了
    d2.innerHTML =""; //这句却是可以的,真是无语
    var re = /(<\/SELECT>)/gi;
    var t = d2.outerHTML.replace( re ,""); //先去掉</SELECT>
    d2.outerHTML = ot + d1.innerHTML+"</SELECT>";//再加上组合好的内容
}

以上代码只在 IE 内核的浏览器出现,FireFox 没有上述问题

 

转自:http://blog.csdn.net/cityhunter172/archive/2009/02/04/3862009.aspx

分享到:
评论

相关推荐

    N氧化碳浏览器.rar

    总的来说,N氧化碳浏览器2.1作为一款基于Webbrowser控件的第三方浏览器,虽然具备基本的浏览功能,但其存在的多个BUG表明它可能不那么适合对性能和稳定性有高要求的用户。开发者应关注并修复这些BUG,提升用户体验。...

    「前端攻城狮学习笔记七:常见前端面试题之HTMLCSS部分(二)」.docx

    以下是几个例子及解决办法: 1. 浏览器默认的 margin 和 padding 不一致。为了解决这个问题,可以在全局样式中添加 `* {margin: 0; padding: 0;}` 来统一所有元素的外边距和内边距。 2. IE6 的双边距 Bug。当浮动...

    前端 45 道面试题及答案.docx

    浏览器工作原理可以分为以下几个步骤: 1. 输入域名地址 2. 发送至DNS服务器并获得域名对应的WEB服务器IP地址 3. 与WEB服务器建立TCP连接 4. 服务器的永久重定向响应 5. 浏览器跟踪重定向地址 6. 服务器处理请求 7....

    jq仿滚动条,超简单易用

    在实际应用中,使用"jq仿滚动条"插件通常包括以下几个步骤: 1. 引入jQuery库和滚动条插件的JavaScript文件。 2. 在CSS中定义滚动条的样式,利用插件提供的类名进行定制。 3. 使用JavaScript初始化插件,通常是在...

    前端开发面试题及答案

    2. 浏览器测试:IE、Firefox、Chrome、Opera 等浏览器的内核分别是 IE 内核、Gecko、Webkit、Presto 等。 3. IE6 BUG 的解决方法:双边距 BUG、3 像素问题、超链接 hover 点击后失效等。 其他 1. 标签上 title 与 ...

    基于javascript实现图片切换效果

    典型的结构包括一个容器元素和几个图片元素。在这个例子中,我们有一个ID为`box`的容器,内部包含了多个`img`标签,每个`img`代表一个要显示的图片。同时,还有两个用于切换图片的按钮,分别设置为`left`和`right`。...

    chrome.exe

    Chrome 32.0.1700.76包含以下几个bug修复和体验提升: 1、在音频、视频、摄像头等标签上展示对应的图标; 2、Win8 Metro模式的新形象; 3、自动阻止恶意软件; 4、提供一些新的app或扩展的API; 5、更多高级...

    Z-Blog v1.6 渡虎谷修改版

    服务器:Windows 2000及IIS5.0以上,需要ADO数据库、FSO、XMLDOM等系统组件支持和空间的读写权限,具体请查询网络服务商或查看本机配置。客户端:支持Mozilla FireFox 1.0、IE6.0、...10、增加了几个UBB代码的支持;

Global site tag (gtag.js) - Google Analytics