马黑黑 发表于 2022-2-3 12:01

JS:动态创建元素

本帖最后由 马黑黑 于 2022-2-3 12:10 编辑

本帖目标:在一个特定场景创建一个 audio 播放器

实现思路:

用 JS 的 createElement 创建一个 audio 子元素,并给它赋相关值,然后由父元素用 appendChild 方法将子元素追加到自己的名下。

代码:

一、HTML场景:

<div id="myBox">
      <p>我是p标签,我在等待我的播放器弟弟:<br> </p>
</div>


二、JS创建并追加子元素到上面 div 的内容中:

<script language="javascript">

var aud = document.createElement("audio");

aud.autoplay = "autoplay";
aud.loop = "loop";
aud.controls = "controls";
aud.src = "http://www.kumeiwp.com/sub/filestores/2022/01/13/e8bc3a9d8493369f4ea3936527d6894e.mp3";

document.getElementById("myBox").appendChild(aud);

</script>

JS解释:

① 用 document.createElement() 方法创建元素,我们创建的是 audio 播放器,所以要指明括号中的元素标签名称为 audio,创建其他的就用对应的标签名,如 div、span、ul 等等。我们声明一个变量来完成这个创建,变量即为元素的句柄,方便下面对这个新元素进行其他操作。

var aud = document.createElement("audio"); // 创建新元素并将元素句柄授权给变量 aud

② 设定新 audio 标签的属性:

aud.autoplay = "autoplay";// 自动播放
aud.loop = "loop";//循环播放
aud.controls = "controls";// 控件可见
aud.src = "MP3地址";

③ 最后是将这个业已创建的 audio 播放器元素交给谁,也就是说在谁的地盘里出现。我们布置的场景是一个id标识为 myBox 的div,它已经有一个大儿子 p 标签,在等它的弟弟呢,audio 这个二宝就由myBox生出来:

document.getElementById("myBox").appendChild(aud);

看,直接生,前面不用给句柄变量,因为没必要,但生的是谁要有变量 aud ,不能生错了。

马黑黑 发表于 2022-2-3 12:01

<div id="myBox">
        <p>我是p标签,我在等待我的播放器弟弟:<br>&nbsp;</p>
</div>

<script language="javascript">

var aud = document.createElement("audio");
aud.autoplay = "autoplay";
aud.loop = "loop";
aud.controls = "controls";
aud.src = "http://www.kumeiwp.com/sub/filestores/2022/01/13/e8bc3a9d8493369f4ea3936527d6894e.mp3";
document.getElementById("myBox").appendChild(aud);

</script>

加林森 发表于 2022-2-3 12:14

好听好看,跟到学习。{:4_190:}

红影 发表于 2022-2-3 12:44

来学习js调用的相关知识。感谢黑黑分享{:4_187:}

马黑黑 发表于 2022-2-3 13:05

加林森 发表于 2022-2-3 12:14
好听好看,跟到学习。

{:4_180:}

马黑黑 发表于 2022-2-3 13:09

红影 发表于 2022-2-3 12:44
来学习js调用的相关知识。感谢黑黑分享

是不是觉得JS需要记忆的东西更多?而且,要学好JS,没有一定的英文基础是比较艰难的。JS的函数、方法、过程以及一些保留字,都是用自然语言的描述方式,像 math(数学)、createElement(创建元素)、while(条件循环,当……的时候)等等,不会英语就会莫名其妙,会英语一目了然。

加林森 发表于 2022-2-3 13:14

马黑黑 发表于 2022-2-3 13:05


谢茶

红影 发表于 2022-2-3 15:21

马黑黑 发表于 2022-2-3 13:09
是不是觉得JS需要记忆的东西更多?而且,要学好JS,没有一定的英文基础是比较艰难的。JS的函数、方法、过 ...

其实不管会不会,它用到的单词毕竟有限,只要熟悉这些单词就可以了啊。

马黑黑 发表于 2022-2-3 15:53

红影 发表于 2022-2-3 15:21
其实不管会不会,它用到的单词毕竟有限,只要熟悉这些单词就可以了啊。

不行。它的东西不止这些单词。

红影 发表于 2022-2-3 16:45

马黑黑 发表于 2022-2-3 15:53
不行。它的东西不止这些单词。

嗯嗯,那的确是有点困难呢。将来有完全汉化的JS就好了。

马黑黑 发表于 2022-2-3 17:42

红影 发表于 2022-2-3 16:45
嗯嗯,那的确是有点困难呢。将来有完全汉化的JS就好了。

没必要的

红影 发表于 2022-2-4 14:21

马黑黑 发表于 2022-2-3 17:42
没必要的

我们使用起来就方便了啊{:4_173:}

马黑黑 发表于 2022-2-4 14:24

红影 发表于 2022-2-4 14:21
我们使用起来就方便了啊

这得依赖浏览器的支持。目前,没有纯国产的浏览器。

红影 发表于 2022-2-4 15:26

马黑黑 发表于 2022-2-4 14:24
这得依赖浏览器的支持。目前,没有纯国产的浏览器。

唉,没办法的事。

马黑黑 发表于 2022-2-4 19:41

红影 发表于 2022-2-4 15:26
唉,没办法的事。

也许有,两条路:

其一:重新封装JS,不改变运行机制,只封装开发环境,做完编译成原生态的JS代码;

其二:编写自己核心的浏览器,包括JS、css都是自定义的,这样一切都是中文的。
页: [1]
查看完整版本: JS:动态创建元素