【问题标题】:Javascript filter over HTMLCollectionJavascript 过滤 HTMLCollection
【发布时间】:2022-02-01 08:22:41
【问题描述】:

我想从浏览器加载的所有 js 文件中获取特定的查询参数。我的查询参数位于名为 script.js(例如:https://abcd.com/script.js?code=123)的 js 文件中。在浏览器控制台中,我尝试这样:

const scripts = document.getElementsByTagName("SCRIPT")
scripts.filter((script) => { return script.src.includes("script.js?code=")})

但这会返回错误Uncaught TypeError: document.getElementsByTagName(...).filter is not a function。请建议代码更改或有更好的方法来获得相同的?

【问题讨论】:

  • HTMLCollection 不是数组,将其设为这样的数组:Array.from(document.getElementsByTagName("SCRIPT"));。还有document.scripts 集合可用,使用它可以节省几个字符。

标签: javascript loops filter console htmlcollection


【解决方案1】:

getElementsByTagName 等方法不返回数组,而是返回节点列表。 只需用括号和扩展运算符包装您的查询选择器,即可从节点列表创建一个数组。

const scripts = [...document.getElementsByTagName("SCRIPT")]
scripts.filter((script) => { return script.src.includes("script.js?code=")})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-30
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2016-12-09
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多