javascript - for循环不会在javascript启动时运行
问题描述
我正在尝试制作一个待办事项列表并将其存储在本地存储中以便保存。我在启动时运行 get() 和 list() 函数将其从 localStorage 中拉出并列出。问题是 for 循环不会在 list() 函数中运行。一旦我放入一个新项目并运行 newItem() 函数,它就会从 localStorage 中拉出并列出所有内容。有任何想法吗?
get();
list();
function Todo(name){
this.name = name;
this.completed = false;
}
function newItem(){
var t = new Todo(document.getElementById("newItem").value)
items.push(t)
save();
console.log(items)
}
function save(){
var save = JSON.stringify(items)
localStorage.setItem("localsave", save)
list();
}
function list(name){
var html = "";
console.log(items)
for(var i in items){
var todo = items[i];
var name = todo.name
var completed = todo.completed;
html += "<li>"+name+""+completed+"</li>"
}
$("#ul").html(html);
}
function get(){
var temp = localStorage.getItem("localsave")
items = JSON.parse(temp)
}
如果有人对此感兴趣,HTML 文档看起来像这样
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">
<script
src="https://code.jquery.com/jquery-3.3.1.js"
integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60="
crossorigin="anonymous"></script>
<script src="todo.js"></script>
<form method="post" action="javascript:newItem()">
<input type="text" id="newItem" name="newItem" placeholder="New item">
</form>
<ul id="ul">
</ul>
解决方案
您的代码首先运行 java 脚本代码,然后呈现 HTMl 元素。
在呈现具有“ul”id 的控件之前,该行首先执行,因此它已经从存储中获取数据,但无法在未呈现的“ui”中查看它们。
$("#ul").html(html);
所以你的代码应该todo.js
在渲染 HTML 元素后调用:
<html>
<body>
<script
src="https://code.jquery.com/jquery-3.3.1.js"
integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60="
crossorigin="anonymous"></script>
<form method="post" action="javascript:newItem()">
<input type="text" id="newItem" name="newItem" placeholder="New item">
</form>
<ul id="ul">
</ul>
<script src="todo.js"></script>
</body>
</html>
推荐阅读
- javascript - 如何让我的 Javascript 待办事项列表中的任务出现在新的列表项上?
- java - Java调度程序在一段时间后不工作
- javascript - 从 JS 生成 html
- python - 我在 jupyter notebook 上制作了一个与 python 一起使用的 Twitter API,但是当我要求搜索推文时,它没有返回任何内容
- r - R - 匹配不同开始和结束条件的子集行
- python - python中的len函数。已申报,但在 -1 上需要帮助
- sql - 将日期设置为每个 ID 的最小日期并更新
- php - 如何更改此原始语句以执行相反的操作
- python - after_cancel 在 python tkinter 中不起作用
- sharepoint - 指向 SharePoint 2019 文档集的 Word 超链接不起作用