[JS] 2x een loop, kan dat sneller :?

Pagina: 1
Acties:

  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Topicstarter
Zoals sommige wellicht hebben gezien in oudere topics, ben ik bezig met een probeerseltje:

http://verwijderddomain.nl/GoT/test.html

Ik zit nu met het volgende probleem, wat naar mijn idee sneller kan maar ik zie het niet meer (na 4 uur kijken)

Het probleem zit hem naar mijn idee in volgende
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?
function getSelected() {
    var num = null;

    for (var i=0; i<getObj('PList').elements.length; i++) {
        var obj = getObj('PList').elements[i];
        if (obj.type == 'checkbox' &amp;&amp; obj.checked) {
            num++;
        }
    }

     if (num) {
        var win = open('','','width=780,height=580,resizable,scrollbars');
        win.document.write('<a onclick="window.print();" href="javascript:window.print();">Print personen</a>');
        for (var i=0; i<getObj('PList').elements.length; i++) {
            var obj = getObj('PList').elements[i];
            if (obj.type == 'checkbox' &amp;&amp; obj.checked) {
                win.document.write(MyList.persons[i].getPersonDetails());
            }
        }
    }
}
?>

Dit wordt gebruikt om de personen welke aangevinkt zijn in een nieuw venster te tonen zodat ze makkelijk uit te printen zijn...

[ Voor 13% gewijzigd door Woudloper op 18-09-2005 23:34 ]


Verwijderd

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function getSelected() {
    var win = false;
      var the_obj = getObj('PList');
    for (var i=0; i<the_obj.elements.length; i++) {
        var obj = the_obj.elements[i];
        if (obj.type == 'checkbox' && obj.checked) {
            if(!win) {
                win = window.open('','','width=780,height=580,resizable,scrollbars');
                win.document.open();
                win.document.write('<a onclick="window.print();" href="javascript:window.print();">Print personen</a>');
                }
            win.document.write(MyList.persons[i].getPersonDetails());
        }
    }
    if(win) win.document.close();
}

Bedoel je zoiets?

Het is nu 1 for-loop en getObj('PList') is eruit gehaald (werd elke iteratie 2x uitgevoerd dus in totaal 4x!).

Ik denk trouwens niet dat het aan deze functie ligt. Ik zou eerder kijken naar de functies die door de for-loop worden uitgevoerd...hier bijvoorbeeld "getPersonDetails()".

  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Topicstarter
Op vrijdag 21 december 2001 12:16 schreef Blues het volgende:

[.. de code ..]

Bedoel je zoiets?
Ja, dat bedoelde ik. Thanx daarvoor... Ziet er ook een stuk overzichtelijker uit meteen...
Ik denk trouwens niet dat het aan deze functie ligt. Ik zou eerder kijken naar de functies die door de for-loop worden uitgevoerd...hier bijvoorbeeld "getPersonDetails()".
Die vond ik best wel snel :P Hetgene wat lang duurt is door alle objecten heen lopen en deze in de selectielijst te tonen. Tenminste dat denk ik :?