CPU 100% on a Loop while retrieving form values

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Kant

    CPU 100% on a Loop while retrieving form values

    Hi,

    i have a simple problem. i have a form with a lot's of number of Text
    and Hidden Fields. I just do a simple loop to get each value for each
    attribute. I have about more than 2000.

    if i do something simple like :

    for (var i=0; i<2000; i++)
    aValue = i+10;

    it runs well. But if i do something like
    for (var i=0; i<2000; i++)
    aValue = document.myForm .elements[i].value;

    it gives me 100% CPU for a long time before i submit the form.

    Cheers,

    Kant.
  • Richard Cornford

    #2
    Re: CPU 100% on a Loop while retrieving form values

    "Kant" <kanthann@hotma il.com> wrote in message
    news:7e58446c.0 401160730.59618 928@posting.goo gle.com...[color=blue]
    >i have a simple problem. i have a form with a lot's of number
    >of Text and Hidden Fields. I just do a simple loop to get each
    >value for each attribute. I have about more than 2000.
    >
    >if i do something simple like :
    >
    >for (var i=0; i<2000; i++)
    > aValue = i+10;
    >
    >it runs well. But if i do something like
    >for (var i=0; i<2000; i++)
    > aValue = document.myForm .elements[i].value;
    >
    >it gives me 100% CPU for a long time before i submit the form.[/color]

    It is very inefficient to resolve document.myForm .elements 2000 times.
    Compare it with:-

    var els = document.forms['myForm'].elements;
    for(var c = 0; c < 2000;c++){
    aValue = els[c].value;
    }

    But looking up properties on 2000 object is going to be relatively slow
    however you do it.

    Richard.


    Comment

    • Lee

      #3
      Re: CPU 100% on a Loop while retrieving form values

      Kant said:[color=blue]
      >
      >Hi,
      >
      >i have a simple problem. i have a form with a lot's of number of Text
      >and Hidden Fields. I just do a simple loop to get each value for each
      >attribute. I have about more than 2000.
      >
      >if i do something simple like :
      >
      >for (var i=0; i<2000; i++)
      > aValue = i+10;
      >
      >it runs well. But if i do something like
      >for (var i=0; i<2000; i++)
      > aValue = document.myForm .elements[i].value;
      >
      >it gives me 100% CPU for a long time before i submit the form.[/color]

      Move as much as possible to outside the loop:

      var myElements=docu ment.myForm.ele ments;
      for(var i=0;i<2000;i++) {
      aValue=myElemen ts[i].value;
      }

      Slightly more efficient, but probably not practical in whatever
      you're really doing:

      var myElements=docu ment.myForm.ele ments;
      for(var i=0;i<2000;aVal ue=myElements[i++].value);

      Comment

      • ZeBest Kant

        #4
        Re: CPU 100% on a Loop while retrieving form values

        Ok thanks a lot guys :D

        it works fine !!!

        *** Sent via Developersdex http://www.developersdex.com ***
        Don't just participate in USENET...get rewarded for it!

        Comment

        Working...