Ik heb een leuk zoekfunctietje gebouwt in js die wat arrays en objecten doorbladert en de resultaten in de array arrResult zet. Maar nu wil ik als er meerdere zoekacties uitgevoert worden, dat de resultaten van de vorige zoekactie natuurlijk gedelete worden.
heb al op verschillende manieren geprobeerd, maar 't wil maar niet lukkeh..
eerst maar even de zoekfunctie:
een paar manieren die ik al geprobeerd heb:
Ik dagt dat het er misschien aan zou liggen dat ie binnen de functie de array arrResult van de vorige zoekactie hergebruikt, en ik alleen de globale array delete (en dat ie dus de lokale gebruikt)
hoop dat m'n probleempje beetje duidelijk is..
heb al op verschillende manieren geprobeerd, maar 't wil maar niet lukkeh..
eerst maar even de zoekfunctie:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| var arrResult = new Array(); function fnSearch(argDataSource, argSearchFor, arg1, arg2, arg3) { // ga door iedere 'child'/index van de datasource for (strVar in argDataSource) { // als het type variabele een Array is, heeft het nog geen objecten. Dus als // we niet op kolom1, kolom2 of kolom3 zoeken, hebben we hier nog nix // aan.. dus moeten we nog 1 level dieper if ((argDataSource[strVar].constructor.toString().match('Array') == 'Array') && (!argSearchFor.indexOf('Kolom') > -1)) { if (arg1) fnSearch(argDataSource[strVar], argSearchFor, arg1, strVar); else fnSearch(argDataSource[strVar], argSearchFor, strVar); } // als we op kolom* zoeken, en de waarde van het textfield is // gelijk aan die van de huidige index >> else if (((argSearchFor.indexOf('Klas') > -1) || (argSearchFor.indexOf('Dag') > -1) || (argSearchFor.indexOf('Uur') > -1)) && (arg1) && (arg2)) { if ((argSearchFor = 'Klas') && (arg1 == document.getElementById('txt'+ argSearchFor).value)) arrResult[++arrResult.length] = new fnResult(arg1, arg2, strVar, eval('argDataSource[strVar]').id); else if ((argSearchFor = 'Dag') && (arg2 == document.getElementById('txt'+ argSearchFor).value)) arrResult[++arrResult.length] = new fnResult(arg1, arg2, strVar, eval('argDataSource[strVar]').id); else if ((argSearchFor = 'Uur') && (strVar == document.getElementById('txt'+ argSearchFor).value)) arrResult[++arrResult.length] = new fnResult(arg1, arg2, strVar, eval('argDataSource[strVar]').id); // als we niet op kolom* zoeken, maar op een andere factor // vergelijk het bijbehorende object met de waarde van het // bijbehorende textfield >> } else if (eval('argDataSource[strVar].' + argSearchFor.toLowerCase()) == document.getElementById('txt'+ argSearchFor).value) arrResult[++arrResult.length] = new fnResult(arg1, arg2, strVar, eval('argDataSource[strVar]').id); } } |
een paar manieren die ik al geprobeerd heb:
PHP:
1
2
| <input type="button" name="btnZoek" value="Nu zoeken.." onClick="arrResult.length = 0; fnSearch(data, fnRadioValue('radZoekenOp')); fnSResult(arrResult);" /> |
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| <input type="button" name="btnZoek" value="Nu zoeken.." onClick="fnEmptyArray(arrResult); fnSearch(data, fnRadioValue('radZoekenOp')); fnSResult(arrResult);" /> .. de bijbehorende functie: .. function fnEmptyArray(arrResult) { for (strIets in arrResult) { delete arrResult[strIets]; fnEmptyArray(arrResult[strIets]); } } .. of .. function fnEmptyArray(arrResult) { for (strIets in arrResult) { arrResult[strIets] = null; fnEmptyArray(arrResult[strIets]); } } |
PHP:
1
2
| <input type="button" name="btnZoek" value="Nu zoeken.." onClick="arrResult = new Array; fnEmptyArray(arrResult); fnSearch(data, fnRadioValue('radZoekenOp')); fnSResult(arrResult);" /> |
Ik dagt dat het er misschien aan zou liggen dat ie binnen de functie de array arrResult van de vorige zoekactie hergebruikt, en ik alleen de globale array delete (en dat ie dus de lokale gebruikt)
hoop dat m'n probleempje beetje duidelijk is..
[ Voor 0% gewijzigd door r0bert op 12-08-2002 11:49 . Reden: var arrResult = new Array(); vergeten ]