Home > Software engineering >  how not to flood the html page with the innerhtml
how not to flood the html page with the innerhtml

Time:11-04

I have this code :

function addInDiv() {
    let div = document.getElementById("divName");
    div.innerHTML  = '<p>'   "test"   '</p>'   
}
    
setInterval(addInDiv, 1000); 

this code make

<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>

... infinitely and flood the computer CPU.

I would like "divName" to only contain the last 5 lines that have been added by div.innerHTML

so, how can i display the last 5 lines displayed so as not to flood the html page and the pc's cpu

thanks

CodePudding user response:

Store the number of appended elements in a variable, increment it every time you append, and check whether its been appended 5 times or not. If it has, cancel the interval.

var appended = 0;
var interval

function addInDiv() {
  if (  appended == 6) {
    clearInterval(interval)
  }
  let div = document.getElementById("divName");
  div.innerHTML  = '<p>'   "test"   '</p>'
}

interval = setInterval(addInDiv, 1000);
<div id="divName"></div>
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>

CodePudding user response:

With jQuery:

var counter = 0;
function addInDiv() {
    counter  
    if(counter <= 5) {
        $('#divName').append('<p>'   "test"   '</p>');
    }       
}
    
setInterval(addInDiv, 1000); 
  • Related