Monday, June 3, 2024
 Popular · Latest · Hot · Upcoming
55
rated 0 times [  57] [ 2]  / answers: 1 / hits: 19715  / 10 Years ago, thu, december 25, 2014, 12:00:00

Below is my code



Same code is working in local server but not in live.



    htmlC = ;
htmlC += '<select name=pagenum id=pagenum style=width:135px onChange=setPageSearchValue(this.value)>';
for(i=1 ; i<=tot_pages ; i++)
{
if(i.toString() == document.frmlist.start.value)
{
htmlC += <option value='+i+' 'selected' >+i+</option>;
}
else
{
htmlC += <option value='+i+'>+i+</option>;
}
}
htmlC += '</select>';


I have tried finding infinite loop but no success. Very same code is working in local server.


More From » for-loop

 Answers
9

Using string concatenation in this manner is usually a bad idea, especially if you don't know the number of iterations you will be doing. Every time you concatenate a string, you will reallocate the memory needed to fit the new string and need to garbage collect the old one (which might not even be done during the loop for performance reasons)



var htmlBuffer = [];
htmlBuffer.push('<select name=pagenum id=pagenum style=width:135px onChange=setPageSearchValue(this.value)>');
for(i=1 ; i<=tot_pages ; i++)
{
if(i.toString() == document.frmlist.start.value)
{
htmlBuffer.push(<option value='+i+' 'selected' >+i+</option>);
}
else
{
htmlBuffer.push(<option value='+i+'>+i+</option>);
}
}
htmlBuffer.push('</select>');

htmlC = htmlBuffer.join('n');


The above will define an array, to which you push each row onto. It will dynamically allocate memory needed for the expanding data, and finally, you allocate 1 string for the total amount of data . This is much more efficient. I don't know if this is the actual problem in your case (since we don't know what tot_pages are), but it's never a bad idea to avoid string concatenations in loops anyway.


[#68385] Tuesday, December 23, 2014, 10 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
dayanaracolleeng

Total Points: 7
Total Questions: 96
Total Answers: 104

Location: Mayotte
Member since Mon, Sep 12, 2022
2 Years ago
dayanaracolleeng questions
Wed, Jul 20, 22, 00:00, 2 Years ago
Sat, Dec 11, 21, 00:00, 3 Years ago
Sun, Jun 27, 21, 00:00, 3 Years ago
Wed, Jan 27, 21, 00:00, 3 Years ago
;