javascript - 使用 document.createElement() 创建元素,然后使用 document.getElementById() 设置 id 未定义

标签 javascript html dom audio

请参阅此https://jsfiddle.net/vpLbvp0o/17/举一个我的问题的例子。

我正在尝试动态创建音频元素,在 html 页面上分层音乐。这是我在创建新的音频元素并播放音乐时所做的事情:

const new_layer = document.createElement("audio");
new_layer.id = "hello";
new_layer.src = "some_sound.mp3";
new_layer.play();

这样就可以了,音乐开始播放。稍后,如果我想使用已设置的 id 来引用同一元素以暂停音乐或更新 src,则使用 document.getElementById("hello") 返回 null。找不到该元素,但音乐显然仍在 DOM 中播放。我如何引用这个我显然已经创建并且仍然存在的元素?在 jsfiddle 中,您可以看到我在尝试检索元素之前等待超时,但它似乎不存在。

如果我对 HTML 文档中已定义的元素执行相同的操作,则一切正常。这是使用 JavaScript 动态创建元素的限制吗?

最佳答案

该节点不在 DOM 中,您需要添加它。

document.body.appendChild(new_layer);

关于javascript - 使用 document.createElement() 创建元素,然后使用 document.getElementById() 设置 id 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49546707/

相关文章:

php - 在 PHP 中导入 JavaScript

javascript - 切换汉堡下拉菜单 : How to call ancestor with JQuery?

javascript - 更改按钮颜色和背景颜色onclick

javascript - 在没有jquery的情况下在javascript中重新排序div

javascript - 如何使用CSS/HTML或Javascript更改单词中单个字母的颜色

javascript - 哪个 MEAN 生成器 - javascript

javascript - 调用js函数仅在jquery mobile上第一次有效

javascript - 函数返回 bool 时如何使用不同的 SweetAlert?

javascript:无法在函数中使用全局变量来导航 dom

javascript - iOS Safari Javascript 无法运行,但可以在桌面和 Android 上运行