このコードを変更して、.chordのタグ間ではなく、「{}」間で機能するようにする方法はありますか?(Jquery)
//Basically it iterates over my text and transposes chords based on an array
var match;
var chords = ['C','C#','D','D#','E','F','F#','G','G#','A','A#','B','C','Db','D','Eb','E','F','Gb','G','Ab','A','Bb','B','C'];
var chords2 = ['C','Db','D','Eb','E','F','Gb','G','Ab','A','Bb','B','C','C#','D','D#','E','F','F#','G','G#','A','A#','C'];
var chordRegex = /(?:C#|D#|F#|G#|A#|Db|Eb|Gb|Ab|Bb|C|D|E|F|G|A|B)/g;
$('.chord').each(function(){
///// initializes variables /////
var currentChord = $(this).text(); // gatheres each object
var output = "";
var parts = currentChord.split(chordRegex);
var index = 0;
/////////////////////////////////
while (match = chordRegex.exec(currentChord)){
var chordIndex = chords2.indexOf(match[0]);
output += parts[index++] + chords[chordIndex+1];
}
output += parts[index];
$(this).text(output);
});
これが私がこれまでに持っているものですが、それは機能しません
var iframeBody=$('iframe').contents().find('body');
var str = $(iframeBody).html();
var rec = /\{(.*?)\}/g, matchesc;
while (matchesc = rec.exec(str)) {
///// initializes variables /////
var currentChord = matchesc[1]; // gatheres each object
var output = "";
var parts = currentChord.split(chordRegex);
var index = 0;
/////////////////////////////////
while (match = chordRegex.exec(currentChord)){
var chordIndex = chords2.indexOf(match[0]);
output += parts[index++] + chords[chordIndex+1];
}
output += parts[index];
//$(this).text(output);
matchesc[1] = output;
$(iframeBody).html(str.replace(matchesc[1], output));
//alert(matchesc[1]);
}
編集
.chordは通常、次のようになります。
<span class="chord">C#m</span>
でも今はこんな感じ…
{C#m}
しかし、私はまだ転置できるようにしたい