さて、私の短くて簡単に説明できる説明はこれです。私は2つの配列を持っていFilterList
ますGamesReset
. 私が持っているこの機能が機能し、チェックボックスとドロップダウンメニューでいくつかのゲームを除外するときはいつでも、機能は次のようなものから始まりますFilterList=GamesReset;
。ゲームの年齢を除外するまで、この関数は正常に機能するようです。またはGamesReset
のようなものでない限り、関数は決して触れません。そして、ゲームをフィルタリングするときに使用する唯一のツールは. これで、間違いなく、私の知る限り決して変わるべきではありません。をリセットする必要があります。次に、除外する必要があるものに応じて、それらのゲームを から削除し始めます。私が抱えている問題は、while(i<GamesReset.length){}
FilterList=GamesReset;
FilterList.splice(i,1);
GamesReset
FilterList
FilterList
GamesReset
もフィルタリングされます。これは、まったく意味がありません。私のタイトルのように、 , , , and now equals 1 と言っているようb=0;
なa=b;
ものa++;
ですb
.
これが、人に物事を説明する私の悪い癖で無理をせずに、この問題を明らかにする最善/最短の方法だと思います。GamesReset
誰かが実際に何が起こっているかを見たい場合は、現在利用可能なWebページがあります. エラーを機能させるには、ボックスをチェックせずに年齢を 10 に変更します。一番下の段落はGamesReset
配列 (<br>
各配列を区切るために使用) であり、私が変更するだけのときに変更されるものです。FilterList
JavaScript で。ページソースを見ると実際のコードは上で述べた時と比べて少しずれているかもしれませんが、ほぼ100%同じものです。また、URL なしでこのページでコードを利用できるようにしたかったのですが、含まれている html タグを使用してそれを行う方法がわかりません。
実際には、これが JavaScript 関数です。私の質問が拒否されたとき、私はちょうど4つのスペースのことを理解しました.
function SearchFilter() {
Games = GamesReset;
plat = document.getElementById('platformcheck').checked;
rpg = document.getElementById('rpgcheck').checked;
puzz = document.getElementById('puzzlecheck').checked;
hybo = document.getElementById('hybocollectcheck').checked;
ages = document.getElementById('agescheck').value;
if ((!plat) && (!rpg) && (!puzz) && (!hybo)) {
FilterList = Games;
} else {
FilterList = [];
i = 0;
while (i < Games.length) {
Set = '';
Set = Games[i];
Set = Set.split('</>');
StrFind = Set[0];
if (
(plat && (StrFind.search(',platform,') > -1)) || (rpg && (StrFind.search(',rpg,') > -1)) || (puzz && (StrFind.search(',puzzle,') > -1)) || (hybo && (StrFind.search(',hybocollect,') > -1))) {
FilterList.push(Games[i]);
}
i++;
}
// so by now, we should have the filtered array
}
//seperate filter for ages
i = 0;
while (i < FilterList.length) { //The problem should definitely start here
Set = '';
Set = FilterList[i];
Set = Set.split('</>');
StrFind = Set[1];
if ((Math.abs(StrFind)) > ages) {
FilterList.splice(i, 1);
} else {
i++;
}
}
GL.innerHTML = GamesReset.join('<br>');
}
注意点として、年齢フィルターが機能しているときに問題が発生します。そしてそれがする唯一のことはFilterList.splice(i,1);
. しかし、それは変化してしまいますGamesReset
。を追加したときにこの関数を少し変更しましたが、それは が のようにフィルタリングされないようGames=GamesReset;
にするための別のテストでしたが、それでもフィルタリングされます。GamesReset
FilterList
編集:答えがすべてを明確に説明しているので、URLを削除したので、今は必要ありません。