【问题标题】:javascript .children not working in Camino Browserjavascript .children 在 Camino 浏览器中不起作用
【发布时间】:2011-03-06 17:20:27
【问题描述】:

这是一个奇怪的问题,无论出于何种原因,在 Camino 浏览器中获取元素的子元素都不起作用。适用于所有其他浏览器。有人知道怎么修这个东西吗?谷歌没有帮助:(

var site_result_content = document.getElementById(content_id);
    site_child_nodes = site_result_content.children;
    alert('started');
    for(i=0;i<site_child_nodes.length;i++) {
        alert('cycle1');
        document.getElementById(site_child_nodes[i].id).className = 'tab_content';
        ShowHide(site_child_nodes[i].id,'hidden');
    }

在这种情况下,started alert 被调用,但 cycle1 没有被调用。

【问题讨论】:

    标签: javascript camino


    【解决方案1】:

    我敢猜测它还没有实现(它只在 Firefox 3.5 中实现)。您可以改用childNodes,它返回节点列表(而不仅仅是元素)。然后检查nodeType 以确保它是一个元素。

    var site_result_content = document.getElementById(content_id);
    site_child_nodes = site_result_content.childNodes;
    alert('started');
    for(i=0;i<site_child_nodes.length;i++) {
        // Check this is actually an element node
        if (site_child_nodes[i].nodeType != 1)
            continue;
    
        alert('cycle1');
        document.getElementById(site_child_nodes[i].id).className = 'tab_content';
        ShowHide(site_child_nodes[i].id,'hidden');
    }
    

    【讨论】:

      【解决方案2】:

      请改用childNodeschildren 最初是 IE 中的专有属性,而 childNodes 属于 W3C DOM 规范,并且在过去十年发布的所有主要浏览器都支持。区别在于children 只包含元素,而childNodes 包含所有类型,尤其是文本节点和注释节点。

      我在下面优化了您的代码。您应该使用var 声明所有变量,包括那些在循环中使用的变量,例如i。另外,document.getElementById(site_child_nodes[i].id) 是不必要的:如果元素没有 ID 并且与 site_child_nodes[i] 完全相同,它将失败。

      var site_result_content = document.getElementById(content_id);
      var site_child_nodes = site_result_content.childNodes;
      alert('started');
      for (var i = 0, len = site_child_nodes.length; i < len; ++i) {
          if (site_child_nodes[i].nodeType == 1) {
              alert('cycle1');
              site_child_nodes[i].className = 'tab_content';
              ShowHide(site_child_nodes[i].id, 'hidden');
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2019-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-28
        • 1970-01-01
        • 1970-01-01
        • 2021-08-06
        相关资源
        最近更新 更多