Javascript: Gitarren-Akkorde für verschiedene Tonarten setzen?
Hallo, Wissende,
habe Liedtexte als HTML-Dokumente, die Gitarren-Akkorde enthalten.
Problem: Wenn das Lied in einer anderen Tonart gespielt wird, stimmen die Akkorde nicht. Deshalb möchte ich die Tonart als URL-Parameter z.B. tonart=G angeben. Javascript (JS) soll die Akkorde setzen.
Im HTML-Code notiere ich also, wo die Tonika, Dominante und Subdominante gesetzt werden soll :
Und habe das JS-Array
akk_const = [
["(To)", "(Do)", "(Su)" ]
,["C", "G", "F" ] // tonart=C
,["D", "A", "G" ] // tonart=D
,["F", "C", "B" ] // tonart=F
,["G", "D", "C" ] // tonart=G
];
Also je nach Tonart muss der String (TO) durch C, D, F, G ersetzt werden.
Umständlich geht das so:
// (To)nika auf C setzen
document.querySelector( "body" ).innerHTML = document.querySelector( "body" ).innerHTML.replace(/\(To\)/g, "<b><b>C</b></b>");
// (Do)minante auf G setzen
document.querySelector( "body" ).innerHTML = document.querySelector( "body" ).innerHTML.replace(/\(Do\)/g, "<b><b>G</b></b>");
Aber ich möchte das in einer Schleife machen. Kann mir bitte jemand die JS.Kommandos aufschreiben? So weit bin ich:
window.addEventListener('DOMContentLoaded', function () {
// URL Parameter tonart vorhanden?
let akk_params = new URLSearchParams(document.location.search);
let akk_tonart = akk_params.get("tonart");
if ( akk_tonart ) {
alert( akk_tonart );
// hier Tonarten einsetzen
}
});
Danke für Antworten
1 Antwort
window.addEventListener('DOMContentLoaded', function () {
// URL Parameter tonart vorhanden?
let akk_params = new URLSearchParams(document.location.search);
let akk_tonart = akk_params.get("tonart");
if (akk_tonart) {
// JS-Array mit den Akkorden
let akk_const = [
["(To)", "(Do)", "(Su)"],
["C", "G", "F"], // tonart=C
["D", "A", "G"], // tonart=D
["F", "C", "B"], // tonart=F
["G", "D", "C"], // tonart=G
];
// Schleife durch die Akkorde
for (let i = 0; i < akk_const[0].length; i++) {
let searchStr = "\\" + akk_const[0][i]; // Escape-Sonderzeichen in der Suche
let replaceStr = "<b><b>" + akk_const[akk_tonart][i] + "</b></b>";
let regex = new RegExp(searchStr, 'g');
// Akkorde ersetzen
document.querySelector("body").innerHTML = document.querySelector("body").innerHTML.replace(regex, replaceStr);
}
}
});
Quelle= chatGBt