javascript - 未捕获的范围错误 : Maximum call stack size exceeded with innerHTML

标签 javascript innerhtml addeventlistener

我对 Javascript 不是很有经验,但我遇到了一个我无法理解的问题。我的代码很简单:

document.getElementById ('chat_line_list').addEventListener ("DOMSubtreeModified", LocalMain, false);

function LocalMain ()
{
    var chatList = document.getElementById('chat_line_list').lastChild.lastElementChild.innerHTML;
    chatList = chatList.replace('InfoThump', '<span class="newemo-1 emoticon"></span>');
    chatList = chatList.replace('MuskMelon', '<span class="newemo-2 emoticon"></span>');
    chatList = chatList.replace('PoisonApple', '<span class="newemo-3 emoticon"></span>');
    chatList = chatList.replace('PoisonBanana', '<span class="newemo-4 emoticon"></span>');
    chatList = chatList.replace('PoisonWatermelon', '<span class="newemo-5 emoticon"></span>');
    chatList = chatList.replace('PoisonGrape', '<span class="newemo-6 emoticon"></span>');
    chatList = chatList.replace('NotNippy', '<span class="newemo-7 emoticon"></span>');
    document.getElementById('chat_line_list').lastChild.lastElementChild.innerHTML = chatList;
}

当我用新修改的字符串替换 innerHTML 时,异常发生在 LocalMain() 函数的最后一行。此代码中是否存在导致循环或溢出的内容?

最佳答案

你正在造成无限循环!

您正在监听元素 chat_line_list 上的 DOMSubtreeModified,然后您在附加到该事件的函数中更新该元素!

关于javascript - 未捕获的范围错误 : Maximum call stack size exceeded with innerHTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16466691/

相关文章:

javascript - 在 DIV-Javascript 中添加自动滚动

javascript - 一次输出一个数组元素

javascript - innerHTML 基础,在循环中添加数字

javascript - 使用innerHTML设置数据无法用querySelector带数据

javascript - AddEvenLister 在附加后立即触发

javascript - 调整浏览器窗口大小时,addEventListener 'resize' 不会触发

javascript - 递增不起作用

javascript - setInterval() 如何与 button.onclick 一起使用

Javascript 变量不会在循环外更新,在 OK 内

Javascript : Event listener defined inside function of object literal making the code dead