JavaScript在添加时崩溃<;br>;

JavaScript在添加时崩溃<;br>;,javascript,html,Javascript,Html,很多天以来,如果我想用elem.innerHTML+=''或document.createElement('br')添加,整个网站就会崩溃。 但是如果我用一个普通的字母来做这件事,它就可以正常工作了 函数设置空间(elem){ 如果((元素clientHeight-49)/16>=1){ 对于(var i=0;i 您的代码似乎工作正常,不会崩溃 如果您试图通过添加额外的来增加高度,那么这不是正确的方法。 而是建议通过更改样式属性直接更改高度 你可以试试:elem.innerHTML+='\n

很多天以来,如果我想用
elem.innerHTML+='
'
document.createElement('br')
添加

,整个网站就会崩溃。
但是如果我用一个普通的字母来做这件事,它就可以正常工作了

函数设置空间(elem){
如果((元素clientHeight-49)/16>=1){
对于(var i=0;i
  • 您的代码似乎工作正常,不会崩溃
  • 如果您试图通过添加额外的
    来增加高度,那么这不是正确的方法。
  • 而是建议通过更改样式属性直接更改高度

  • 你可以试试:
    elem.innerHTML+='\n'

    我相信它和你的一样

    每次设置innerHTML时,都必须解析HTML、构造DOM并将其插入文档中。这需要时间

    这导致你的浏览器崩溃。实际上没有崩溃,但它仍在处理中

    解决方案是,您需要使用appendChild

    function setSpace(elem) {
        var space = document.createElement('div');
        var count = (elem.clientHeight-49)/16;
    
        if (count >= 1) {
            for (var i=0; i <= count; i++) {
                elem.appendChild(space);
            }
        }
    }
    
    函数设置空间(elem){
    var space=document.createElement('div');
    var计数=(元素clientHeight-49)/16;
    如果(计数>=1){
    
    对于(var i=0;i循环有永远无法完成的风险,因为您在每次迭代中都会扩展元素的高度,这也会影响循环的停止条件。
    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>';
          }
        }
      }
    
    函数设置空间(elem){
    设end=(元素clientHeight-49)/16;
    如果(结束>=1){
    
    对于(var i=0;i),你的代码似乎工作正常。你能发布你的html吗?你如何调用这个函数?“整个网站崩溃”:这意味着什么?你的循环没有完成吗?控制台中的错误?什么是“正常字母”?可能的重复。我的意思是网站正在无休止地加载。OP说它“崩溃”。这对他们说没有帮助。这不会在文档中添加可见的换行符。谢谢,它起到了作用。我目前正在开发一个聊天应用程序,由于位置:消息的绝对值,我必须遍历每条消息并查看,它是否有多行,以及相对于包装的
    设置.