您可以使用字符串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 ..謝謝。 –