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说它“崩溃”。这对他们说没有帮助。这不会在文档中添加可见的换行符。谢谢,它起到了作用。我目前正在开发一个聊天应用程序,由于位置:消息的绝对值,我必须遍历每条消息并查看,它是否有多行,以及相对于包装的
设置.