优化以下代码:console.log(changeColor) for(let i=0;i<changeColor.length;i++){ changeColor[i].addEventListener("click",function(){ judgeId(changeColor[i].getAttribute("id")) // console.log(changeColor[i].getAttribute("id")) judgeColor(changeColor[i].getAttribute("id")) } ) } function judgeId(id){ for(let i=0; i<linkcolorDom.length;i++){ if(id==="red"){ localStorage.setItem("color","red") }else if(id==="skyblue"){ localStorage.setItem("color","skyblue") }else if (id==="yellow"){ localStorage.setItem("color","yellow") } } } function judgeColor(color){ for(let i=0; i<linkcolorDom.length;i++){ linkcolorDom[i].disabled=true } for(let i=0; i<linkcolorDom.length;i++){ if(linkcolorDom[i].getAttribute("id")===color){ // console.log(linkcolorDom[i].getAttribute("id")) // console.log(color) // console.log("1") linkcolorDom[i].disabled=false } } } }
时间: 2024-01-21 07:05:14 浏览: 92
可以通过以下方式对代码进行优化:
1. 将循环中的变量 `i` 修改为 `let` 关键字,避免变量提升和作用域问题。
2. 将 `judgeId()` 函数中的 for 循环优化为 switch 语句,避免重复判断 if 语句的效率问题。
3. 将 `judgeColor()` 函数中的两个 for 循环合并为一个,避免重复遍历的效率问题。
4. 将需要被改变颜色的元素缓存到变量中,避免多次访问 DOM 的效率问题。
下面是优化后的代码:
```
console.log(changeColor);
const linkcolorDom = document.querySelectorAll('link[rel="stylesheet"][title]');
for (let i = 0; i < changeColor.length; i++) {
changeColor[i].addEventListener("click", function () {
const id = changeColor[i].getAttribute("id");
judgeId(id);
judgeColor(id);
});
}
function judgeId(id) {
switch (id) {
case "red":
localStorage.setItem("color", "red");
break;
case "skyblue":
localStorage.setItem("color", "skyblue");
break;
case "yellow":
localStorage.setItem("color", "yellow");
break;
default:
break;
}
}
function judgeColor(color) {
for (let i = 0; i < linkcolorDom.length; i++) {
linkcolorDom[i].disabled = linkcolorDom[i].getAttribute("id") !== color;
}
}
```
这样优化后的代码,可读性更好,同时也提高了代码的执行效率。
阅读全文