I just put 10 x's as many OPTIONS in that select list and there's no noticable difference in time. I'm not on any type of fast computer here either - 450 Mhz.
Since this is client-side, processor usage isn't nearly as important as if it was server-side. And also, if you want to add many more options than that, you're more than likely going to have to worry about the size of HTML being output, before you worry about script execution time - that is, unless you're turning this into a game that needs it to execute lightning fast. Plus, have any of you noticed how slow Hotmail is when you want to select all mail items (spam) on a page? :-) I don't think MS has any concerns with slow client-processing. Chris Tifer ----- Original Message ----- From: "Bostrup, Tore" <[EMAIL PROTECTED]> To: "ActiveServerPages" <[EMAIL PROTECTED]> Sent: Monday, September 09, 2002 11:07 AM Subject: RE: OT- java problem > AFAICT (...could tell), the algorithm in the original code used a standard > binary search approach for performance. Your sequential search would be > much slower on a list of some size. > > Regards, > Tore. > > -----Original Message----- > From: Chris Tifer [mailto:[EMAIL PROTECTED]] > Sent: Monday, September 09, 2002 4:25 PM > To: ActiveServerPages > Subject: Re: OT- java problem > > > Hi Timothy, > > Wow! That's some pretty convoluted code you got going on there. > > Does your function ONLY look for values that match it and highlight it? > That's what I can determine from it at first glane, but I didn't go too > in-depth > into it because it looks like LOTS of overhead. > > If that's ALL it does, or is needed to do, try this function out: > > ========================================== > <script type="text/javascript" language="javascript"> > function findMatchingEl(strFormName, strElName, strSearchString){ > var objForm = document.forms[strFormName] > var objEl = objForm.elements[strElName] > var intCount = 0 > strSearchString.toString() > for(var x = 0; x < objEl.options.length; x++){ > if(strSearchString == objEl.options[x].value.substring(0, > strSearchString.length)){ > objEl.options[x].selected = true > return true > } > } > } > </script> > ========================================== > > Pass it the form name, the field you want to check through (drop-down field > obviously) and the value you want it to find. > > It'll loop through all the options in that select list, comparing their > values with the value you're looking for. As soon as it find the FIRST > option that matches, it'll exit the function. That'd be easy enough to > switch > around, say if you wanted to go to the LAST item that matches. > > As you can see too, it's considerably less code. As a matter of fact, it > might even be more compliant too because there's no use of document.all > - an IE-only implementation which I believe has gone by the wayside > through the advent of getElementById() > > Hope that helps and that I wasn't too off in what you were trying to do. > > Chris Tifer > http://www.emailajoke.com > > ----- Original Message ----- > From: "Gregory Miley" <[EMAIL PROTECTED]> > To: "ActiveServerPages" <[EMAIL PROTECTED]> > Sent: Monday, September 09, 2002 9:09 AM > Subject: RE: OT- java problem > > > > I would believe you would just have to reverse your search order to start > > from high and go low... Instead of low to high > > > > > > for (iLow = 0; iHigh = iLow; iLow++){ > > // Get the current option > > sTemp = oOptions(iCurrent).value.toUpperCase(); > > var sSubstr = sTemp.substr(0, iLength); > > > > if (sSubstr < sInput) > > { > > // Search the upper half of the branch > > iLow = iCurrent + 1; > > } > > else if (sSubstr > sInput) > > { > > // Search the lower half of the branch > > iHigh = iCurrent - 1; > > } > > else > > { > > bFound = true; > > break; > > } > > > > // Pick the middle of the branch again > > iCurrent = Math.floor(iLow + ((iHigh + 1) - iLow) / 2); > > > > } > > > > > > I hate editing other peoples crap so I think im completely wrong cause I > > don't feel like analyzing this junk. But the basic jist would be to revers > > the order in which the list is gone through. > > > > Hope that helps at all.... ^_^; > > > > Greg > > > > > > -----Original Message----- > > From: Timothy Owen [mailto:[EMAIL PROTECTED]] > > Sent: Sunday, September 08, 2002 4:42 PM > > To: ActiveServerPages > > Subject: OT- java problem > > > > > > I was asked recently to edit a ASP page that generates the following HTML > so > > that the drop down was in descending order. I did that. It was as simple > > as editing the SQL statement. Now a piece of Java code that was working > to > > allow the user to type in box A to select an item in the dropdown is not > > working. If I revert the dropdown to the original ascending sort order it > > works fine again. Is there anyone out there that might like to help with > > this? Below is the entire original html document. > > > > Html to follow - watch for wrap. > > //// > > > > > > <html> > > > > <head> > > <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> > > <title></title> </head> > > > > <script type="text/javascript" language="javascript"> > > function SmartSelect(oInput, oSelect) > > { > > var sInput = String(oInput.value).toUpperCase(); > > var iLength = sInput.length; > > > > if (iLength <= 0) > > return -1; > > > > var oOptions = oSelect.options; > > var i, diff, bFound, sTemp; > > > > var iHigh = oOptions.length - 1; > > var iLow = 0; > > var iCurrent = Math.floor((iHigh + 1) / 2); > > > > bFound = false; > > do > > { > > // Get the current option > > sTemp = oOptions(iCurrent).value.toUpperCase(); > > var sSubstr = sTemp.substr(0, iLength); > > > > if (sSubstr < sInput) > > { > > // Search the upper half of the branch > > iLow = iCurrent + 1; > > } > > else if (sSubstr > sInput) > > { > > // Search the lower half of the branch > > iHigh = iCurrent - 1; > > } > > else > > { > > bFound = true; > > break; > > } > > > > // Pick the middle of the branch again > > iCurrent = Math.floor(iLow + ((iHigh + 1) - iLow) / 2); > > > > } while (iHigh >= iLow) > > > > // Is there a better prefix match? > > if (iLength < sTemp.length) > > { > > // Store the current old value > > var iOld = iCurrent--; > > > > // Now go back until we find one that doesn't match the > > prefix > > while (iCurrent >= 0) > > { > > // Gone too far -- the prefix no longer matches. > > if > > (oOptions(iCurrent).value.toUpperCase().substr(0, iLength) != sInput) > > break; > > > > iOld = iCurrent--; > > } > > > > iCurrent = iOld; > > } > > > > if (bFound) > > return iCurrent; > > else > > return -1; > > } > > > > function DoIt() > > { > > var i = SmartSelect(document.all("a"), document.all("b")); > > document.all("b").selectedIndex = i; > > } > > > > </script> > > <body style="font-family: helvetica, arial;"> > > > > <div align="center"> > > <center> > > <table border="0" width="600" bgcolor="#F0F0F0"> > > <tr> > > <td width="100%"> > > <form method="POST" action="parts_choose_drawing_review.asp" > > name="FrontPage_Form1" onsubmit="return FrontPage_Form1_Validator(this)" > > language="JavaScript"> > > <p align="center">Please choose a drawing number to review parts > > for.<font size="2"></font></p> > > <div align="center"> > > <center> > > <table border="0" width="80%"> > > <tr> > > <td width="100%"> > > <table border="0" width="100%"> > > <tr> > > <td width="100%" colspan="2" valign="top"> > > <p align="center"> > > <select size="1" name="drawing_number" id="b"> > > <option value="Please Choose">Please Choose</option> > > > > <option value="4550">4550</option> > > > > <option value="4549">4549</option> > > > > <option value="4548">4548</option> > > > > <option value="4547">4547</option> > > > > <option value="4546">4546</option> > > > > <option value="4545">4545</option> > > > > <option value="4544">4544</option> > > > > <option value="4543">4543</option> > > > > <option value="4542">4542</option> > > > > <option value="4541">4541</option> > > > > <option value="4540">4540</option> > > > > <option value="4539">4539</option> > > > > <option value="4538">4538</option> > > > > <option value="4537">4537</option> > > > > <option value="4536">4536</option> > > > > <option value="4535">4535</option> > > > > <option value="4534">4534</option> > > > > <option value="4533">4533</option> > > > > <option value="4532">4532</option> > > > > <option value="4531">4531</option> > > > > <option value="4530">4530</option> > > > > <option value="4529">4529</option> > > > > <option value="4528">4528</option> > > > > <option value="4527">4527</option> > > > > <option value="4526">4526</option> > > > > <option value="4525">4525</option> > > > > <option value="4524">4524</option> > > > > <option value="4523">4523</option> > > > > <option value="4522">4522</option> > > > > <option value="4521">4521</option> > > > > <option value="4520">4520</option> > > > > <option value="4519">4519</option> > > > > <option value="4518">4518</option> > > > > <option value="4517">4517</option> > > > > <option value="4516">4516</option> > > > > <option value="4515">4515</option> > > > > <option value="4514">4514</option> > > > > <option value="4513">4513</option> > > > > <option value="4512">4512</option> > > > > <option value="4511">4511</option> > > > > <option value="4510">4510</option> > > > > <option value="4509">4509</option> > > > > <option value="4508">4508</option> > > > > <option value="4507">4507</option> > > > > <option value="4506">4506</option> > > > > <option value="4505">4505</option> > > > > <option value="4504">4504</option> > > > > <option value="4503">4503</option> > > > > <option value="4502">4502</option> > > > > <option value="4501">4501</option> > > > > <option value="4500">4500</option> > > > > <option value="4499">4499</option> > > > > <option value="4498">4498</option> > > > > <option value="4497">4497</option> > > > > <option value="4496">4496</option> > > > > <option value="4495">4495</option> > > > > <option value="4494">4494</option> > > > > <option value="4493">4493</option> > > > > <option value="4492">4492</option> > > > > </select></td> > > </tr> > > <tr> > > <td width="50%" valign="top"></td> > > <td width="50%" valign="top"></td> > > </tr> > > <tr> > > <td width="50%" valign="top"><b><font size="2">Quick > > finder:</font></b><br> > > <font size="1">Enter the drawing number that you > are > > looking for here. If the drawing number is > > valid > > it will appear in the dropdown box above. > Once > > you > > have located the proper drawing number, press > > submit.</font></td> > > <td width="50%" valign="top"> > > <input type="test" id="a" onkeyup="DoIt()" size="20"></td> > > </tr> > > </table> > > </td> > > </tr> > > </table> > > </center> > > </div> > > </center> > > <p align="right"><input type="submit" value="Submit" > > name="Submit"></p> > > </form> > > </td> > > </tr> > > <center> > > </table> > > </center> > > </div> > > </body> > > </html> > > > > > > --- > > You are currently subscribed to activeserverpages as: [EMAIL PROTECTED] > To > > unsubscribe send a blank email to > > %%email.unsub%% > > > > --- > > You are currently subscribed to activeserverpages as: [EMAIL PROTECTED] > > To unsubscribe send a blank email to > %%email.unsub%% > > > --- > You are currently subscribed to activeserverpages as: [EMAIL PROTECTED] > To unsubscribe send a blank email to > %%email.unsub%% > > --- > You are currently subscribed to activeserverpages as: [EMAIL PROTECTED] > To unsubscribe send a blank email to %%email.unsub%% > --- You are currently subscribed to activeserverpages as: [email protected] To unsubscribe send a blank email to [EMAIL PROTECTED]
