javascript - 我在使用 .play 函数时遇到了一些问题 javascript
问题描述
我一直在尝试在我正在制作的一些新游戏中使用音频,并且我已经正确设置了所有内容,因为它是一个非常简单的程序。音频在控件打开的情况下播放良好,但我想弄清楚如何用 Javascript 播放它,所以播放器事件可以触发声音。
我努力了:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>audio?</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<audio id='test'>
<source src='test.mp3' type='audio/mpeg'>
sorry
</audio>
<script>
var myAudio=document.getElementsByName('test');
myAudio.play();
</script>
</body>
</html>
同样,一个非常简单的代码和我得到的错误消息是:
TypeError: myAudio.play 不是一个函数。
任何人都可以帮助解决这个问题吗?
解决方案
您应该查看的文档Document.getelementsByName()
,因为您似乎对它的正确使用有两个误解:
链接的文档指出,成功的调用会返回一个
NodeList
或一个HTMLCollection
对象,两者都没有任何方法play()
。您似乎认为此方法将返回一个 singleNode
,但事实并非如此。链接的文档还表明它将通过
name
属性来定位元素。您没有在 HTML 中提供的任何元素中使用属性name
-id
您似乎想要引用的元素与.name
(这仅适用于 Internet Explorer 10 及更低版本,如果 或 值与您传递的参数的值匹配,则将返回元素。但是
id
,name
依赖这种非标准行为并不是一个很好的做法,尤其是考虑到 IE 不断减少的市场份额。)
在这种情况下,您确信只有一个 ID 为 的元素test
,您可能希望改为使用Document.querySelector()
(它返回Node
您看似正在寻找的):
var myAudio=document.querySelector('#test');
myAudio.play();
或者,Document.getElementById()
也可以在这种情况下工作:
var myAudio=document.getElementById('test');
myAudio.play();
推荐阅读
- codeigniter - 在 MYSQL 中使用 id 生成准入号。我想要来自 CodeIgniter 的代码
- azure-devops - Kentico Multisite Azure Application Gateway App Service MVC 配置问题 - 502 错误
- ios - 如何使用“图表”创建空标签?
- reactjs - 反应原生的奇怪功能?
- angular - 如何防止用户在输入文本框中输入超过指定数量的角度输入字符?
- spring-boot - 错误:不可解析的父 POM:无法传输工件 org.springframework.boot:spring-boot-starter-parent:pom
- classification - 任何深度学习模型用于图像中的实例分类,而不是边界框?
- css - Clip-path alternatives for reveal text
- python - 如何将数据框列表除以值列表?
- python - 关于 UserList __init__, ( [:], isinstance ) 的问题