「型指定された」配列の値は 1 つずつアクセスされますが、テキスト配列では、文字をペアで 1 つの値として配置します。したがって、その場合、1文字を2文字の文字列と比較しています(「ta」と「t」、「be」と「a」、「ru」と「b」を比較します。もちろん、これは決して等しくなりません)。
これを考慮するには、'stepsize' を考慮する必要があります (つまり、画像がグループ化される文字数)。部分文字列を使用すると、サイズ 'stepsize' の入力されたテキスト ブロックをテキスト配列の値と比較できます。
作業用フィドル (ate now の代わりに aattee と入力する必要があります)
別のフィドル、ここで「たべる」と入力する必要があります
このフィドルのステップサイズは、テキスト配列の最初の項目に基づいています
このフィドルは、テキスト配列の値が同じ長さでない場合に備えて、ステップサイズを動的に検出します (提案については haynar に感謝します)。
更新: これは最後の例のコードです (Bob に感謝):
var text = ['ta', 'ber', 'u'];
var happy = ['http://www.vendian.org/howbig/UnstableURLs/letter_a_poster.png',
'http://chineseknotting.org/projects/knotty/T-carrick.jpg',
'http://etc.usf.edu/presentations/extras/letters/varsity_letters/38/17/E-400.png'
];
var grumpy = $('img').map(function(){ return this.src; }).get(); //gets the original images from the HTML
$("#test").on('keyup', function() {
var typed = this.value;
var textOffset = 0;
$.each(text, function(index, item) {
var stepsize = text[index].length;
if (typed.substring(textOffset, textOffset+stepsize) == text[index]) {
$('li', 'ul').eq(index).find('img').attr('src', happy[index]);
}else{
$('li', 'ul').eq(index).find('img').attr('src', grumpy[index]);
}
textOffset += stepsize;
});
});