javascript - 访问通过其他脚本插入的 HTML 元素

标签 javascript dom

感谢 BABYLONjs,我正在开发一个图形界面,并且我决定实现模式选择功能,这意味着您可以选择编辑模式或可视化模式。这两种模式各自具有不同的 HTML 组件,因此我选择编写一个构造脚本,该脚本将通过实现与所选模式相对应的正确元素来创建 HTML。我们将 A.js 称为构造脚本,将 B.js 称为包含所有功能的主脚本。

当我在 B.js 中尝试获取 HTML 元素(例如通过 A.js 插入的按钮)时,返回值为 null (我使用 document.js 获取该元素)。 getELementById('元素')。

我确保在 HTML 中将 A.js 放在 B.js 之前,所以我不太明白为什么它不起作用。

如果您需要更高的精度,请随时询问。 谢谢 !

最佳答案

确保两个 javascript 文档都附加到同一个 HTML 文件,以便 document 引用相同的内容。

还要确保您所做的一切都是同步的。例如,如果您使用的是 window.addEventListener('onload') ,那么这就是异步的。这意味着该代码实际上并未运行,而是等待一段时间自行运行。与此同时,它可能决定运行您的 B.js 代码,此时您选择的元素尚不存在。

如果这是问题所在,请在 window.addEventListener('onload') 中运行 B.js 脚本。

第三件事是您的 A.js 脚本可能位于一个函数内,需要运行该函数才能将元素添加到 DOM。

<小时/>

如果没有实际的代码,就很难调试像您所提出的那样的特定问题。如果您需要更好的答案,请附上实际的演示代码,以便我们更好地识别问题。

<小时/>

编辑:已发布代码。

正如您所发布的,在代码中,您正在定义构造函数,然后告诉浏览器在窗口加载时运行它。然后,您可以在调用构造函数之前运行 A.js。有两种解决方案。

将整个 B.js 封装在 window.addEventListener("load") 中,或者执行完全不同的操作。

在 A.js 之前包含 B.js,并定义一个名为 B() 的函数。将所有代码放入其中。然后,在构造函数结束时调用 B()。这意味着 B.js 将被迫等待窗口加载。我希望这有帮助!

关于javascript - 访问通过其他脚本插入的 HTML 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50134142/

相关文章:

javascript - 如何在 JavaScript 中快速检测元素是否不可见?

javascript - 温泉用户界面 : access ons-dialog's DOM elements from parent page

jquery - 循环.prevAll()?

javascript - 如何让 OnClick 事件只执行一次?

javascript - canvas 上下文 getImageData() 函数不会执行,可能是因为它是在图像加载之前执行的

javascript - 动态改变动画元素的属性

javascript - 普通 JavaScript 中的滚动动画仅适用于导航链接

javascript - 冲突的组件 Joomla

php - 如何在表单提交事件中从 PHP 调用 javascript 函数

javascript - 修改元标记对象的原型(prototype)