您可以使用字符串interpolati。在和数组索引查找这个,因为它似乎你使用ES6。
<script>
var AudioFiles = [
"file1.wav",
"file2.wav",
"file3.wav",
];
for(var i = 0; i < 3; i++){
document.body.innerHTML = document.body.innerHTML + `
<audio controls>
<source src="${AudioFiles[i]}"; type="audio/wav">
</audio>
`
};
</script>
然而,也有一些问题,我想指出:
首先,我们不倾向于通过常规的首字母大写来命名我们的变量。 (因此,使用的audioFiles
代替AudioFiles
大写字母被保留类和构造函数,通常
其次,这可能不是追加元素到DOM的最佳方式 看看在appendChild
功能:。https://www.w3schools.com/jsref/met_node_appendchild.asp
第三,我们可以使用函数forEach
做类似的事情,而无需使用反自己,这是更好,因为它更声明,并且不容易出错,手动:
<script>
var audioFiles = [
"file1.wav",
"file2.wav",
"file3.wav",
];
audioFiles.forEach(function(item) {
document.body.innerHTML = document.body.innerHTML + `
<audio controls>
<source src="${item}"; type="audio/wav">
</audio>
`
});
</script>
这将取audioFiles
中的每个项目并将其传递到迭代器函数item
。
然而,我们可以做得比这更好的...
<script>
var audioFiles = [
"file1.wav",
"file2.wav",
"file3.wav",
];
document.body.innerHTML =
document.body.innerHTML +
audioFiles.map(function(item) {
return `
<audio controls>
<source src="${item}"; type="audio/wav">
</audio>
`}).join();
</script>
这样,我们重复自己少,所以再有少出问题。
映射函数遍历一个数组并将其转换为另一个数组,迭代器函数的结果。
在音频和控件之间添加空格 – Dark
@BharathShetty Ahh ..谢谢。 –