javascript - 初始化嵌入式推文时,未捕获类型错误 : t. querySelectorAll 不是函数

标签 javascript jquery twitter

我正在使用 Twitter 的嵌入式推文 API。 如果我从页面加载中获得 html markdown,一切都会很好。 如果我使用稍后添加内容的选项并按 ID 加载推文,它也非常有效:

twttr.widgets.load(
  document.getElementById("container")
);

这位于此处的文档中:https://dev.twitter.com/web/javascript/initialization#init

但是如果我尝试使用以下类名加载推文:

twttr.widgets.load(
  document.getElementsByClassName("containers")
);

我在 Twitter 的 widget.js 中遇到此错误:

Uncaught TypeError: t.querySelectorAll is not a function

如果我将元素组记录到控制台,我就有了一个正确的组:

enter image description here

我是否做错了什么,或者这是 Twitter 小部件上的错误?

谢谢!

编辑:

自 2015 年 7 月 28 日起,由于我在 Twitter 开发论坛上发表的另一篇文章,getElementsByClassName 示例已从 Twitter 文档中删除

最佳答案

问题可能来自于 document.getElementsByClassName 返回 NodeList类型不是真正的 javascript Array 对象。另一方面,widgets.load 需要单个元素或元素的Array。这导致 nodeList 被视为单个元素,并且库尝试对其调用 querySelectorAll ,这对于 NodeList 类型不可用。

一个解决方案是在将该 nodeList 传递给 widgets.load 时将其转换为真正的数组。

一种方法:

twttr.widgets.load(
  Array.prototype.slice.call(document.getElementsByClassName("containers"))
);

这是可行的,因为 NodeList 有一个 length 属性并且是可索引的

关于javascript - 初始化嵌入式推文时,未捕获类型错误 : t. querySelectorAll 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31458774/

相关文章:

javascript - 简易饼图无效果

javascript - Jquery递归更新元素类

ios - HTTPBody - Swift POST 请求 - 推特

curl - 使用 Curl 和 Windows 命令行将照片发布到 Twitter

javascript - 我有一个 If 语句不起作用,但逻辑​​上是正确的

javascript - PHP:如何使用 simple_html_dom 解析器将 CSS 文本对齐属性添加到元素的已经存在的内联样式属性?

数组内的 Javascript/Jquery OOP 数组

javascript - Express 提供的客户端 React 应用程序上一致的 url 路由

javascript - 在onbeforeunload之前确认

javascript - 如何为 Twitter 客户端创建一个回复按钮,自动在 'tweet' 表单中填写用户名?