提问人:GoldyCantCode 提问时间:4/19/2023 最后编辑:GoldyCantCode 更新时间:4/20/2023 访问量:67
为什么我无法访问 NYT 填字游戏页面上的 HTML 集合中的元素?
Why can't I access elements in an HTML collection on the NYT crossword page?
问:
我正在尝试编写一个 Chrome 扩展程序,将“上一个谜题”和“下一个谜题”按钮添加到纽约时报填字游戏页面上的工具栏中。我讨厌必须导航回填字游戏存档才能找到另一个谜题,并且不敢相信他们没有将其包含在工具栏中。
我的计划是在工具栏上注入两个带有按钮的附加 li 标签,位于现有的 Rebus 和 Reset 按钮旁边。我已经弄清楚了要注入的所有 HTML,但我似乎无法将 ul 绑定到 javascript 变量以编辑 innerHTML。
我以为这将是一个简单的 10-15 行 javascript,30 分钟的项目。哎 呦。
例如,如果导航到:
https://www.nytimes.com/crosswords/game/daily/
或者,如果您没有《纽约时报》帐户:
https://www.nytimes.com/crosswords/game/mini/
我可以通过编写以下内容来检索工具栏的 HTMLCollection:
var toolbar = document.getElementsByClassName('xwd__toolbar--tools');
返回一个 HTMLCollection,其中 ul 作为第 0 个元素。
但是,如果我尝试实际访问 0th 元素中的 ul,它会返回未定义,我一直在用头撞墙试图找出原因。
var requiredElement = document.getElementsByClassName('xwd__toolbar--tools')[0];
返回undefined
毫无疑问,我在这里错过了什么显而易见的 javascript 东西?
答:
可能原因:
您正在查看赋值的返回值。
在导航到 https://www.nytimes.com/crosswords/game/mini/ 并在浏览器的开发人员控制台中执行后,果然我得到了未定义:var requiredElement = document.getElementsByClassName('xwd__toolbar--tools')[0];
尽管这说里面有一个值,如果我告诉它评估它的值,它将显示在开发人员控制台中:undefined
requiredElement
这里有一个有趣的答案,里面有更多细节:https://stackoverflow.com/a/22844864
评论