<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>按钮</title> </head> <body> <button id="btn">点击生成3000个按钮</button> <div id="content"></div> </body> <script> var btn = document.getElementById("btn"); btn.onclick = function () { for (i = 0; i < 3000; i++) { document.getElementById("content").innerHTML += '<input name="按钮" type="button" onClick="clic()" value="按钮"><\/input>'; } }; </script> </html> 生成3000按钮太卡了 优化一下代码
时间: 2023-10-05 20:08:19 浏览: 234
生成3000个按钮会导致页面加载缓慢,可以考虑使用以下优化方式:
1. 使用文档片段(DocumentFragment)来批量添加元素,减少DOM操作次数,提高性能。
2. 将按钮的创建改为创建元素节点,而不是添加HTML字符串。
3. 将按钮添加到父级节点之前,而不是每次添加到父级节点后面。
优化后的代码如下所示:
```
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>按钮</title>
</head>
<body>
<button id="btn">点击生成3000个按钮</button>
<div id="content"></div>
</body>
<script>
var btn = document.getElementById("btn");
btn.onclick = function () {
var frag = document.createDocumentFragment(); // 创建文档片段
for (i = 0; i < 3000; i++) {
var button = document.createElement("input"); // 创建元素节点
button.type = "button";
button.value = "按钮";
button.onclick = clic;
frag.appendChild(button); // 添加到文档片段中
}
document.getElementById("content").appendChild(frag); // 将文档片段添加到父级节点中
};
function clic() {
console.log("按钮被点击了");
}
</script>
</html>
```
阅读全文