【问题标题】:JavaScript DOM on IEIE 上的 JavaScript DOM
【发布时间】:2011-11-01 19:08:48
【问题描述】:

我想做一个可见/隐藏切换的JS函数。

var foo = function(n){      
    var hidden_elements = document.getElementsByName('hidden');     
    for(var i=0;i<hidden_elements.length;i++){
        hidden_elements[i].style.visibility = 'hidden';
    }       
    hidden_elements[n].style.visibility = 'visible';
};

它适用于 Firefox 和 Chrome,但不适用于 IE。为什么? 提前致谢。

【问题讨论】:

  • 您确定要visibility 而不是display?前者意味着隐藏的元素在 DOM 中仍然占据空间,而后者则没有。
  • 表单中的所有元素是否都具有“隐藏”的名称?你将如何调用这个函数 foo()
  • 原因 #3178 为什么 IE 是地球上最糟糕的浏览器。

标签: javascript dom


【解决方案1】:

我会建议自己避免恐惧并继续:

这些库在消除不同浏览器带来的惊喜方面做了很多工作。如果您是超级极简主义者,您可以随时查看the source 了解他们如何处理差异。也看看quirksmode's compatibility listing

我知道我没有给出可靠的答案,但你会一直遇到这些麻烦,这些是解决问题的好工具。

【讨论】:

    【解决方案2】:

    IE 到 IE8 不遵循 W3C 规范。微软有自己的标准。许多适用于 Firefox 或 Chrome(它们是 W3C 标准)的脚本方法可能无法在 IE 的各种构建中正常工作。

    为什么不从头开始尝试?要么,要么做一些易于访问。您可以通过为 id 制作模式并动态构建这些 id(可能是增量的)来做到这一点。然后,从它们的 id 访问这些标签。

    按名称访问不是首选。 id 最合适。

    【讨论】:

      【解决方案3】:

      您的 html 无效。 "name" 属性必须是唯一的。请改用"class"

      Internet Explorer 可能会出现一些问题,因此可以使用像 flowjs 这样的 DOM polyfill。

      【讨论】:

        猜你喜欢
        • 2011-03-05
        • 2017-09-22
        • 1970-01-01
        • 2019-06-16
        • 2013-05-05
        • 2011-04-06
        • 2011-10-07
        • 2012-04-18
        • 2011-01-15
        相关资源
        最近更新 更多