for循环,if else不工作Javascript
for loop with if else not working Javascript
我正在尝试创建一个列表,用户可以在其中插入他们最喜欢的啤酒。必须检查"userinput"是否已经在数组中。。我的想法如下:循环遍历beersArray,检查数组中是否有与用户输入的值相同的值。如果有,请发出警报,不要添加。如果没有,则将用户输入添加到列表项中。
var submitBier = document.getElementById("submitbeer");
submitBier.addEventListener("click", function(){
event.preventDefault();
var beersArray = [];
var beer = document.getElementById("favobeer");
var beerList = document.getElementById("listwithbeer");
var beerLi = document.createElement("LI");
var BeerName = document.createTextNode(beer.value);
var i;
var j;
for (j = 0; j < beersArray.length; j++) {
if (beersArray[j] === beer.value) {
alert("This beer is already in the list");
} else {
for (i = 0; i < beersArray.length; i++) {
beersArray[i].className = 'beer';
beerLi.appendChild(BeerName);
beerList.appendChild(beerLi);
beersArray.push(beerList.appendChild(beerLi));
}
}
}
});
<div class="beers">
<h1 id="vraagnaam">add your favourite beers</h1>
<input type="text" id="favobeer" value = "" />
<button id="submitbeer" type="submit" value="Submit" >add</button>
<ul id="listwithbeer"></ul>
</div>
代码中存在多个问题
- 数组应该在处理程序之外声明,否则每次单击都会创建一个新的处理程序
- 数组应该填充输入值,而不是
appendChild()
返回的值 - 可以使用
indexOf
检查当前值是否存在于数组中
所以
var beersArray = [];
var submitBier = document.getElementById("submitbeer");
var beer = document.getElementById("favobeer");
var beerList = document.getElementById("listwithbeer");
submitBier.addEventListener("click", function() {
event.preventDefault();
var value = beer.value.trim();
if (beersArray.indexOf(value) == -1) {
var beerLi = document.createElement("LI");
var BeerName = document.createTextNode(value);
beerLi.appendChild(BeerName);
beerList.appendChild(beerLi);
beersArray.push(value);
} else {
alert("This beer is already in the list");
}
});
<div class="beers">
<h1 id="vraagnaam">add your favourite beers</h1>
<input type="text" id="favobeer" value="" />
<button id="submitbeer" type="submit" value="Submit">add</button>
<ul id="listwithbeer"></ul>
</div>
如果在同一个数组中循环,则不需要第二个for循环。
在for循环中放入"if-else"语句的正确方法如下:
for (var j = 0; j < beersArray.length; j++) {
// A If-conditional statement to short-circuit existing beer list
if (beersArray[j] === beer.value) alert ('This beer is already in the list')
// Core Logic
beersArray[j].className = 'beer';
beerLi.appendChild(BeerName);
beerList.appendChild(beerLi);
beersArray.push(beerList.appendChild(beerLi));
}
相关文章:
- 用户名输入如果其他块不能正常工作/Javascript-jQuery-AJAX
- 变量只能在函数中局部工作,不能全局工作-Javascript
- onClick按钮不工作javascript/php/jquery mobile
- 点击骰子赢得't工作(javascript)
- for循环,if else不工作Javascript
- 获取下一个不工作Javascript DOM的同级父节点的子节点
- 可以'没有一个函数可以工作——Javascript
- OnFocus 不是工作 JavaScript HTML;不显示对焦时计算和按钮单击时
- 从 iframe 访问主站点中的工作 JavaScript
- 对于在循环中无法按预期工作 JavaScript
- 在阅读表单输入后写回HTML;t工作(Javascript)
- 复选框单击有效,取消选中复选框不工作Javascript
- 代码在Codepen中工作,而不是在浏览器中工作:JavaScript在鼠标滚轮上缩放SVG
- 当用户在这个工作javascript注释框中提交注释时,您将如何添加用户图像和名称
- 向Wordpress添加工作Javascript谷歌地图代码
- 确认/重定向功能不工作-javascript
- 当/patt/版本工作时,为什么RegExp版本不工作?(Javascript)
- Firefox加载项按钮代码不工作-Javascript
- 计算器功能不工作- Javascript
- 将工作JavaScript对象序列化为仅保留属性的JSON