この関数は、選択された行のidを取得し、配列内にあるかどうかを確認します。それを配列に追加し、それ以外の場合は配列から削除します。問題は、私はイベントの順序を正しく得ることができないということです。ループは途切れているわけではありませんが、ブレークを削除すると、イメージが変わる(チェックボックス)が働いても配列は間違っています。Javascriptで配列に追加しない場合、単純なチェックが行われます
関数の中にそれを入れずに、この機能のdeleteString = [];
外を宣言にもかかわらず、deleteString.push(orderId);
の呼び出しが失敗した理由を私も理解していない
それはどのように大きなにかかわらず、最初の実行時に、問題を明らかに思えますチェックが一致するかどうかにかかわらず、配列は実行されません。だからおそらく、ループが見つかった/見つからないという結果を使う前に、ループが完了するまで待つ必要があります。
function passSelection(orderId) {
// check if empty
if (deleteString.length == 0) {
// turn into array
deleteString = [];
// first entry
deleteString.push(orderId);
// mark this row as checked
$("#"+"select-box-"+orderId).attr('src', 'images/red-checked.png');
}
else {
// not the first order
// check if already in array
// get length of array
var delStrLen = deleteString.length;
// loop through array
for (var i = 0; i < delStrLen; i++) {
if (deleteString[i] == orderId) {
// match found, remove from deleteString array
deleteString.splice(i, 1);
// update the row
$("#"+"select-box-"+orderId).attr('src', 'images/unchecked.png');
break;
}
else {
// not in the array
// add to array
deleteString.push(orderId);
// update row
$("#"+"select-box-"+orderId).attr('src', 'images/red-checked.png');
break;
}
}
}
}
を使用すると、要素がループスルーではなく配列内にあるかどうかを見つけることができます。 – dfasoro
@dfasoro大丈夫私はMDNのアレイページを見ていますが、私はそれを見ましたが、それを使うことは考えていませんでした。ありがとう – joehungjohn