首页 > 解决方案 > JavaScript 在添加时崩溃

问题描述

很多天以来,如果我想添加 or ,我就会坚持下去<br>elem.innerHTML += '<br>'整个document.createElement('br')网站都会崩溃。但是,如果我使用普通字母来执行此操作,则效果很好。

  function setSpace(elem){
    if((elem.clientHeight-49)/16 >= 1){
      for(var i=0; i <= (elem.clientHeight-49)/16; i++){
        elem.innerHTML += '<br>';
      }
    }
  }

我怎么解决这个问题?

标签: javascripthtml

解决方案


循环可能永远不会完成,因为您在每次迭代中都扩展了元素的高度,这也影响了循环的停止条件。elem.clientHeight增加,并且i可能永远不会大于(elem.clientHeight-49)/16

一种出路是首先将限制放入变量中,然后使用它:

 function setSpace(elem){
    let end = (elem.clientHeight-49)/16;
    if (end >= 1){
      for(var i=0; i <= end; i++) {
        elem.innerHTML += '<br>';
      }
    }
  }

...但仍然要小心,因为下次调用setSpace它会添加更多换行符。如果你继续调用这个函数,你将永远不会停止添加换行符。

查看您使用此代码的真正目的。

有更好的方法可以为元素添加间距,例如使用 CSS padding-bottom


推荐阅读