0

基本的にコードチャートをキー全体で上下に移調できるコードチャートアプリがありますが、そのアプリを拡張して、誰かがキーを選択し、関数を使用してクリックイベントで自動的にそのキーに移動できるようにしたいと思いますjavascript または jquery。誰かがこれを理解するのを手伝ってくれますか? ロジックは単純に思えますが、実装方法がわかりません。ユーザーが上下に転置できるようにする現在の機能は次のとおりです...

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;

function transposeUp(x) {   
  $('.chord'+x).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);     
  }); 
}

function transposeDown(x){
    $('.chord'+x).each(function(){
    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],1);
        //var chordIndex = $.inArray(match[0], chords, -1);
        output += parts[index++] + chords2[chordIndex-1];
    }
    output += parts[index];
    $(this).text(output);
});
}

どんな助けでも大歓迎です。回答受け付けます!ありがとうございました

4

1 に答える 1

0

これで全部ですか?クリックイベントを作成する関数?

$('[class^="chord"]').click(function() {
    alert($(this).text() + ' clicked');
});

あなたのコメントに基づく:正しい方向に進むためのいくつかの擬似コードは次のとおりです。

  • 各コード配列の転置バージョンも保存します
  • ノートがクリックされたら、元のコード配列でその要素を見つけます($(this).text()ノート名と一致させるために上記を使用)
  • 一致するものが見つかると、同じ配列インデックスを使用してその転置バージョンを見つけることができます
于 2012-06-12T22:43:56.163 に答える