JavaScript循环在“localStorage.removietem”上停止
为什么localStorage.removeItem会停止循环?如果我删除localStorage.removietem并只保留警报,它会循环整个过程,但使用localStorage.removietem,它会在第一次匹配时停止JavaScript循环在“localStorage.removietem”上停止,javascript,local-storage,Javascript,Local Storage,为什么localStorage.removeItem会停止循环?如果我删除localStorage.removietem并只保留警报,它会循环整个过程,但使用localStorage.removietem,它会在第一次匹配时停止 function removeTask() { for (i=0; i < localStorage.length; i++){ checkbox = document.getElementById('utford'+i);
function removeTask() {
for (i=0; i < localStorage.length; i++){
checkbox = document.getElementById('utford'+i);
if (checkbox.checked == true) {
alert(i);
localStorage.removeItem(localStorage.key(i));
}
}
printList();
}
如果删除某个项,则键会向下移动索引。你需要向后循环
function removeTask() {
for (var i=localStorage.length-1; i>=0; i--){
var checkbox = document.getElementById('utford'+i);
if (checkbox.checked == true) {
localStorage.removeItem(localStorage.key(i));
}
}
printList();
}
如果删除某个项,则键会向下移动索引。你需要向后循环
function removeTask() {
for (var i=localStorage.length-1; i>=0; i--){
var checkbox = document.getElementById('utford'+i);
if (checkbox.checked == true) {
localStorage.removeItem(localStorage.key(i));
}
}
printList();
}
您在删除类似数组的对象的条目时对其进行迭代。 这无法工作,因为每次删除时条目顺序都会混淆 考虑这个例子 第一次迭代删除条目1:
Entry key value
#1 my-first-key my-first-value
#2 my-2nd-key my-2nd-value
第二次迭代尝试删除条目2:
Entry key value
#1 my-2nd-key my-2nd-value
??? ??? ???
根据我对代码的理解,我建议您使用字符串键。然后,您可以选择与元素ID相同的键名。在删除其条目时,您正在对类似数组的对象进行迭代。 这无法工作,因为每次删除时条目顺序都会混淆 考虑这个例子 第一次迭代删除条目1:
Entry key value
#1 my-first-key my-first-value
#2 my-2nd-key my-2nd-value
第二次迭代尝试删除条目2:
Entry key value
#1 my-2nd-key my-2nd-value
??? ??? ???
根据我对代码的理解,我建议您使用字符串键。然后,您可以选择与元素ID相同的键名。您的控制台告诉您什么?您应该声明您的局部变量i,顺便说一句,带有var的复选框。谢谢,Pointy,我现在更改了它,但我仍然有同样的问题。如果你打算删除东西,也不要向前迭代,因为你在迭代时修改了列表,结果会很糟糕。使用var i=localStorage.length-1;i>=0;你的控制台告诉你什么?顺便说一句,你应该声明你的局部变量i,带有var的复选框。谢谢,Pointy,我现在改变了,但我仍然有同样的问题。如果你打算删除东西,也不要向前迭代,因为你在迭代时修改列表,结果会很糟糕。使用var i=localStorage.length-1;i>=0;i-@user1755603您应该通过单击checkmark@user1755603您应该单击复选标记将此答案标记为正确