正在添加列表项
Adding a list item
有人能帮我解决初学者代码中的一个错误吗?我正在尝试将一个列表项添加到列表中,并尝试用javascript更改将其添加到的列表的id。提前谢谢。
<html>
<head>
<script>
window.onload = init;
function init() {
var button = document.getElementById("submit");
button.onclick = changeDiv;
}
function changeDiv() {
var counter=1
var name = "ul";
var textInput = document.getElementById("textInput");
var userInput = textInput.value;
alert("adding " + userInput);
var li = document.createElement("li");
li.innerHTML = userInput;
var ul = document.getElementById("ul" + loop());
ul.appendChild(li);
}
function loop() {
return counter;
if (counter==3){
counter==0;
}
counter++;
}
</script>
</head>
<body>
<form id="form">
<input id="textInput" type="text" placeholder="input text here">
<input id="submit" type="button">
</form>
<ul id="ul1">
</ul>
<ul id="ul2">
</ul>
<ul id="ul3">
</ul>
</body>
我想你想要的是其中之一:
- 将
counter
的范围定为全球性(yuk) - 围绕所有内容创建一个闭包,并在其中声明
counter
- 您可以在调用
counter
时将其传递到loop()
- 在CCD_ 6中定义CCD_
我想你想要#2,所以我在你的代码中做了几个更正:
小提琴
我选择#2的原因是:
- 闭包允许您的逻辑获得所需资源的应用程序
- 但是要保护其他应用程序可能正在运行的范围(现在或将来),使其不受应用程序可能尝试对该范围进行的任何更改的影响。例如,如果您将计数器声明为全局,那么所有其他javascript都可能对其具有读/写访问权限,这可能会对您演示的代码、其他代码或两者产生负面影响
- 尽可能保持当前初学者代码不变
- 让您使用javascript的一个极其重要的方面进行编程,这将在今天和将来帮助您学习
答案#4的相似之处在于,它将为changeDiv和循环创建一个闭包,从而使它们都可以访问所需内容。然而,我不想过多地更改您现有的逻辑块,从而阻碍增量学习。但是,可以肯定地为changeDiv()
中包含的loop()
(它实际上不是一个循环,而是一个setter)提出一个论点——尽管此时可能会删除单独的函数调用,并进一步集成代码。
本质上,您需要:
- 在全局作用域中声明
counter
(否则loop()
无法访问它) - 在
loop()
中,return语句必须是LAST。之后的任何事情都不会被执行
我稍微修改了一下逻辑,最后的代码是:
window.onload = init;
var counter=1;
function init(){
var button = document.getElementById("submit");
button.onclick = changeDiv;
}
function changeDiv(){
var name = "ul";
var textInput = document.getElementById("textInput");
var userInput = textInput.value;
var id = "ul" + loop();
alert("adding " + userInput + " to " + id);
var li = document.createElement("li");
li.innerHTML = userInput;
var ul = document.getElementById(id);
ul.appendChild(li);
}
function loop(){
var tmp = counter++;
if (counter==4){
counter=1;
}
return tmp;
}
注意loop()
函数中的更改。
我还更改了changeDiv()
功能,以便在警报中显示列表ID。
相关文章:
- 在Javascript中使用JQueryMobile向列表添加项目
- 角度 - 需要向选择下拉列表添加多个占位符
- Javascript:如何为列表添加价值并使其即时更新
- 如何为我的嵌入YouTube播放列表添加Facebook共享按钮
- 如何允许用户将播放列表添加到单个 YT 帐户
- 将值列表添加到值本身,不包括其自身的值
- 将多个英国邮政编码列表添加到谷歌地图
- 如何使用 JavaScript 将下拉列表添加到<跨度>
- 下划线模板,将列表添加到单个数组中
- 如何将地址列表添加到地图一侧
- 可以通过Javascript将选择下拉列表添加到我的winJS工具栏中吗?
- 如何将选择列表添加到自定义实体的案例表单中(注意:替换普通查找字段)
- 使用下拉列表添加/删除搜索框
- 如何使用zip.js将图像文件列表添加到zip文件中
- 如何在jQuery中向不同的下拉列表添加不同的前缀
- 如何在单击时以编程方式将网页列表添加到浏览器收藏夹中
- 单击按钮将下拉列表添加到新行
- 为每个从特定数字开始的x列表添加边框
- 在使用javascript向下拉列表添加项目并运行服务器端代码后,无效的回发或回调参数
- 选择Jplayer播放列表添加复选框