我正在使用Javascript和库Tonal.js
开发音乐应用程序使用Tonal.js,我将获得(例如)美国符号的和弦音符,该音符对应于从A到G的字母。
众所周知,平面音符用 b 符号表示,而尖锐音符用#符号表示(例如 Ab 和 G#< / em>)
我已经实现了一个可以正常工作的代码,以便从我的html元素中检索注释:
1)Html
:
<div id="pad">
<ol class="even first">
<li class='hex C' ><div class="note">C2</div></li>
<li class='hex G' ><div class="note">G2</div></li>
<li class='hex Db'><div class="note">Db3</div></li>
<li class='hex A#'><div class="note">A#3</div></li>
<li class='hex E' ><div class="note">E4</div></li>
</ol>
</div>
2)javascript
:
full_chord = "CMaj7"
chord_notes = Tonal.Chord.notes(full_chord);//takes a signature of a chord and returns the single notes that compose the chord
var selected_notes = chord_notes.map(title => document.querySelectorAll("."+title)); //returns the html elements with the chord notes
这很好,直到我通过签名中带有#的笔记。 例如:
document.querySelectorAll(".C")); //works
document.querySelectorAll(".Cb")); //works
document.querySelectorAll(".C#")); //error: invalid selector
是否可以在选择器中使用#符号?不幸的是,由于它是一种音乐应用程序,因此我不得不使用它。