JS如何推到数组,然后用2次点击空
JS How to push to array and then empty with 2 clicks
我在JSFiddle (http://jsfiddle.net/4UvUv/198/)上创建了这个小示例,它允许您单击3个按钮,当您单击一个按钮时,它将一个值推送到一个名为'selected'的数组。假设我点击Cats按钮,它会把值Cats推到选定的数组。
但我不知道的是如何从数组中删除'猫',如果'猫'按钮再次点击。有人知道如何使用我的例子做到这一点吗?或者是否有更好的方法?
如何推送到选定数组:
var selected = []
$("#cats").click(function(e) {
console.log("Cats");
var value = 'cats';
selected.push(value);
})
您可以尝试这样做:
$("#cats").click(function(e) {
console.log("Cats");
var value = 'cats';
var index = selected.indexOf(value);
if (index === -1) {
selected.push(value);
} else {
selected.splice(index, 1);
}
});
我认为它可以被优化
实现这一点的一个更简单的方法是仅在单击按钮元素时切换它们的类。然后,只有在单击#results
按钮时才能生成数组。这样,您就不需要担心在添加/删除项时维护数组。试试这个:
$(".button").click(function(e) {
$(this).toggleClass('selected');
});
$("#result").click(function(e) {
var selected = $('.button.selected').map(function() {
return this.id;
}).get();
console.log(selected);
})
.selected {
color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="button" id="cats">Cats</button>
<button class="button" id="dogs">Dogs</button>
<button class="button" id="rabbits">Rabbits</button>
<br />
<button id="result">Result</button>
$("#dogs").click(function(e) {
var index = selected.indexOf("Dogs");
if(index == -1){
console.log("Dogs");
var value = 'Dogs';
selected.push(value);
}else{
selected.splice(index,1);
}
})
试试这样:
var selected = [];
var i = 0;
$("#cats").click(function(e) {
if(i == 0){
console.log("Cats");
var value = 'cats';
selected.push(value);
i++} else {
var check = selected.indexOf('cats');
if(check !== -1){
selected.splice(check, 1);
}
i--;
}
});
检查此解决方案。您可以使用indexOf
函数来知道项目是否已经存在于数组中。
var selected = []
$('.buttons').click(function(e) {
var value = $(this).text();
addOrRemove(value);
});
$("#result").click(function(e) {
console.clear();
console.log("results: ", selected);
});
function addOrRemove(item) {
console.clear();
console.log(item);
var index = selected.indexOf(item);
if (index === -1) {
selected.push(item);
} else {
selected.splice(index, 1);
}
}
button {
font-size: 16px;
padding: 10px;
min-width: 100px;
margin: 5px;
background-color: #87CEEB;
border: 1px solid #E6E6E6;
color: white;
}
button:hover {
background-color: #67BCDE;
}
button:focus {
outline: none;
background-color: #3AB2E2;
}
div button {
margin-top: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<button id="cats" class="buttons">Cats</button>
<button id="dogs" class="buttons">Dogs</button>
<button id="rabbits" class="buttons">Rabbits</button>
<div>
<button id="result">Result</button>
</div>
相关文章:
- 有没有一个抽象层,这样我就可以集成一次,然后使用pusher、pubnub或faye
- 如果30秒未单击,请应用CSS一次,将其删除,然后重新迭代
- 设置随机数,然后每5秒随机减少一次,直到达到0(javascript)
- 显示数字,然后每5秒随机更改一次(javascript)
- Javascript onclick需要点击两次,然后会创建越来越多的服务器请求
- JavaScript onclick在IE 9中工作两次,然后停止
- 单击时预置图像 - 仅预置一次,然后停止
- 如何每 10 秒调用一次 JS 函数,然后以角度激活一个函数
- JavaScript - innerHTML 更改更多,然后第一次出现加上随机数组
- Chrome扩展程序 - 页面更新两次,然后在YouTube上删除
- 为什么这个脚本只工作一次?只替换元素一次,然后再也不替换
- 加载时可以单击按钮#1,然后需要单击按钮#2两次.按钮#1也需要点击两次
- 做一件事,然后在react js中每隔15秒做一次
- 地图,rails 4.2,javascript,鼠标悬停,只工作一次(或两次).然后在重新加载之后
- Ajax请求三次都不起作用,然后就起作用了
- jQuery-等待此元素,然后执行1次
- Javascript开始处理下一个事件,然后第一次完成
- Flickity gallery - 如何循环浏览一次然后停止自动播放
- Jquery regex replace()只运行两次.然后不# 39;t
- 在所有地方重复$(),或者声明一次然后重用