JavaScript简易待办列表报错求助:排查代码运行异常原因
解决你的待办列表JavaScript报错问题
先帮你梳理下代码里可能导致报错或异常行为的几个关键问题:
1. 未声明变量引发的作用域错误
在else分支里,你直接使用了localjsonarray但没有用let/const声明,这会让它变成全局变量——在严格模式下会直接抛出ReferenceError,哪怕是非严格模式,也可能引发意想不到的逻辑bug。修改方式很简单,给变量补上声明:
else{ let getting = localStorage.getItem('filejson') let localjsonarray = JSON.parse(getting); // 这里加上let声明 localjsonarray.push([doc,doc1]) localStorage.setItem('filejson',JSON.stringify(localjsonarray)) }
2. Submit按钮的默认页面刷新行为
你的按钮类型是type="submit",如果它处于表单上下文(哪怕你没显式写<form>标签,浏览器也可能隐式创建),点击后会触发页面刷新——这会导致你刚写入localStorage的操作还没完成,页面就重置了,看起来像是代码失效或者报错。解决方法二选一:
- 把按钮类型改成普通按钮:
<button type="button" id="btn">Submit</button> - 或者在点击事件里阻止默认提交行为:
let btn = document.getElementById(`btn`) btn.addEventListener('click',(e)=>{ e.preventDefault(); // 新增这行阻止页面刷新 console.log('updating list...') // 后续逻辑保持不变 });
可选优化:让数据结构更易维护
你现在用数组[doc,doc1]存储标题和描述,时间久了容易搞不清顺序,建议改成对象结构,可读性和扩展性更好:
localjsonarray.push({ title: doc, description: doc1 })
把这些修改完成后,你的待办列表应该就能正常工作啦~
内容的提问来源于stack exchange,提问作者Shivam Singh
相关产品推荐
相关产品推荐

