我想通过从下拉框中选择它来更改正在使用的阵列。然后该脚本随机化给定数组中的项目。
可在此处查看完整代码:http://codepen.io/anon/pen/Lqkdp/
HTML:
<select id="scale" name="scale" onchange="changeScale()">
<option value="array_Amaj">Amaj</option>
<option value="array_chromatic">Chromatic</option>
</select>
<div id="scaleprint"></div>
JS:
var array_chromatic = ['A', 'A%23', 'Bb', 'B', 'C', 'C%23', 'Db', 'D', 'D%23', 'Eb', 'E', 'F', 'F%23', 'Gb', 'G', 'G%23', 'Ab'];
var array_Amaj = ['A', 'B', 'C%23', 'D', 'E', 'F%23', 'G%23'];
function changeScale()
{
array_scale = document.getElementById("scale").value;
document.getElementById("scaleprint").innerHTML = array_scale;
array_chromatic = array_scale;
}
如果用户选择“Chromatic”,则称为“scaleprint”的DIV应该更新,脚本的下一部分应该使用该数组随机化并显示给定的音符。
function renderKnuth()
{
array_chromatic.knuthShuffle();
var audio = document.getElementById('sound');
audio.src = 'http://lofiz.co.uk/gtr/dontfret/' + array_chromatic[0] + '.mp3';
var str1 = array_chromatic[0]
str2 = str1.replace("%23", '#');
document.getElementById('knuth_data2').innerHTML = str2;
}
答案 0 :(得分:1)
将array_chromatic设置为字符串
array_chromatic = array_scale
这个
array_chromatic.knuthShuffle()
未定义。
更新
将元素的值更改为此类数字
<option value="0">Amaj</option>
<option value="1">Chromatic</option>
然后改变这个
array_chromatic = array_scale;
到这个
array_chromatic = my_arrays[array_scale];
然后添加此
var my_arrays = [array_Amaj, array_chromatic];
就在你的数组定义之下。