2012-01-15 14 views
2

私の機能は、ie8以降を除くすべてのブラウザで機能します。誰が問題が何であるか、おそらくそれを修正する方法を教えてもらえますか?ありがとう!機能は= <ie8以外のすべてのブラウザで機能します

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 = chords.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); 
     output += parts[index++] + chords2[chordIndex-1]; 
    } 
    output += parts[index]; 
    $(this).text(output); 
}); 
} 

EDIT

私はちょうどそれは同様の分割方法に関係していることが分かりました。私はそれを修正することはできません。 indexOfプロトタイプは現在動作していますが、関数はまだ動作していませんが、chordRegexはオブジェクトではないというエラーが表示されます。何らかの理由でそれが機能していません。

+4

$.inArray機能を使用する必要があります。 :) –

+0

LOL、thats funny。ありがとう! –

答えて

6

IE8はArray.indexOf()をサポートしていません。あなたは1つをインポートするか、自分で書く必要があります。

を参照してください:あなたはすでにjqueryのを使用している場合

+0

+1これは私が探しているものですが、これを私の機能にどのように実装できますか?あなたが気にしないなら...ありがとう! –

+0

さて、質問の先頭にあるコードをJSの上部に追加してください。 IE8のArrayプロトタイプに 'indexOf'メソッドを追加しました。 *しかし、*、すでにjQueryを使用しているので、@ gion_13が指摘するように '$ .inArray'を調べることを検討します。 – karim79

+0

Juan、あなたはkarim79の答えを受け入れましたか? – dyoo

1

、あなたはWeb開発へようこそ代わりindexOf

+0

これはすでに試してみましたが、うまくいきません。しかし、ありがとう! –

+0

あなたは間違って試しました。 'chords.indexOf(match [0]);を置き換えます。'$ .inArray(match [0]、chords));'で '。 – Dementic

+0

私はそれをして、それはtransposeUp関数では動作しますが、まだie8以下では動作しません。また、transposeDownの場合は、どのブラウザーでも動作しません。 –

関連する問題