【问题标题】:Exclude certain TagNames from * selection从 * 选择中排除某些 TagNames
【发布时间】:2023-03-12 22:42:01
【问题描述】:

使用语句:

var children = document.getElementById('id').getElementsByTagName('*');

我想排除所有
元素,是否有 getElementsByTagName 的语法可以让我这样做,或者其他一些好的方法?

【问题讨论】:

  • jQuery Not 会帮助你,如果你可以使用它。

标签: javascript syntax wildcard


【解决方案1】:

使用原生函数无法做到这一点,但可以轻松过滤。

http://jsfiddle.net/idbentley/ncH95/4/

使用 jQuery 或类似的库会更容易(Zepto 是一个很好的小库),但如果你想使用原始 javascript,你可以使用上面的。

【讨论】:

  • Wtf,for each(element in allChildren) 是合法的javascript吗?
  • 我无法在我的代码中获得任何输出,或者当我在 jsfiddle 中点击“运行”时(我以前从未使用过,所以我可能做错了什么)。我现在得跑了,但我会在星期一做更多的工作。
  • 是,是:developer.mozilla.org/en/JavaScript/Reference/Statements/…@Lance,输出到控制台,所以你可以通过firebug,或者webkit inspector看到。不过,我会更新小提琴以打印结果。
  • 哦哇..我不知道。我会投票,但现在它已被锁定。:\ 如果您想编辑您的答案(记下for each(blah in blarg) 是有效的或类似的东西),我可以/很高兴投票。
  • 等等,你用的是什么浏览器? Chrome 抛出语法错误。
【解决方案2】:

如果你使用像 jquery 这样的框架,你可以这样做

$('#id').children().not('br');

【讨论】:

    【解决方案3】:

    使用 jQuery 你可以做到:

    $('#id *').not('br');
    

    【讨论】:

      【解决方案4】:

      没有专门的运算符,但您可以轻松过滤。

      (function () {
          var element = document.getElementById('id');
      
          if (element.tagName === "br")
              throw "AHHHHH!!! IT'S A BR AHHHHH!!!!!!";
      
          // Do stuff if it's not a br.
      }).apply(this);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-22
        • 1970-01-01
        • 1970-01-01
        • 2015-03-03
        • 1970-01-01
        • 2018-02-02
        • 1970-01-01
        • 2019-03-17
        相关资源
        最近更新 更多