首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

IE中form搅混id与name的bug

2012-11-21 
IE中form混淆id与name的bug????????/script ????/body /html 这个情况出现在表单中,如果有一个表单

IE中form混淆id与name的bug
????????</script>

  • ????</body> </html>

    这个情况出现在表单中,如果有一个表单元素name的值为id的时候

    在火狐下我们得到的结果是

    myForm1
    myForm2

    但是在IE7下面,却变成了

    myForm1
    [object]

    不知怎么的,ie错误的访问了它内部name位id的input元素而不是表单元素本身的id属性.使用formElement2.id的方法替代getAttribute()我们仍然可以得到相同的效果.(参见我先前遇到的一个IE的BUG)

    幸运的是我们仍然可以通过以下的方式得到正确的元素:

    formElement2.attributes['id'].value
    formElement2.getAttributeNode('id').value

    既然还有以上的隐性BUG,那我们还要再次修改一下我们覆写的document.getElementById方法

    1. if (/msie/i.test (navigator.userAgent)) //根据userAgent确定用户使用IE浏览器{
    2. ???? document.nativeGetElementById = document.getElementById; ???? document.getElementById = function(id)
    3. ???? { ????????var elem = document.nativeGetElementById(id);
    4. ????????if(elem) ???????? {
    5. ????????????//修改后的确认能得到id属性方法 ????????????if(elem.attributes['id'].value == id)
    6. ???????????? { ????????????????return elem;
    7. ???????????? } ????????????else
    8. ???????????? { ????????????????//如果没有ID相同的,那么就遍历所有元素的集合找到id相同的元素
    9. ????????????????for(var i=1;i<document.all[id].length;i++) ???????????????? {
    10. ????????????????????if(document.all[id][i].attributes['id'].value == id) ???????????????????? {
    11. ????????????????????????return document.all[id][i]; ???????????????????? }
    12. ???????????????? } ???????????? }
    13. ???????? } ????????return null;
    14. ???? }; }

    OK,这个问题总算解决了,希望我们的微软公司能早日修复这些JavaScript DOM BUG

  • 热点排行