为每个按钮单击推送和弹出值

时间:2018-04-25 16:59:01

标签: javascript jquery arrays push pop

在每个按钮上单击,该值应该被推入数组并显示给div。 如果再次单击它,它应该从数组中弹出并从div中删除。

我正在为此切换一个布尔值,但是当布尔值为false时,不会从div中删除弹出的值,这可能是我做错了。 可以编辑项目here



$( "#button-list button" ).each(function(index) {
var items = [];
var toggle = false;
    $(this).on("click", function(){
    toggle = !toggle;
    if(toggle === true)
    items.push(this.value);
    else
    items.pop(this.value);
    
      $("#results").append(items);      
 });
});

<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="button-list">
<button class="w3-button w3-black" value="(1,1)">(1,1)</button>
<button class="w3-button w3-black" value="(2,2)">(2,2)</button>
<button class="w3-button w3-black" value="(3,4)">(3,4)</button>
<button class="w3-button w3-black" value="(5,2)">(5,2)</button>
<button class="w3-button w3-black" value="(3,1)">(3,1)</button>
</div>
<p id="results"></p>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

3小变化

  1. 声明each()函数之外的项目。如果不是,它会为每个听众重置
  2. 更改append()。{/ li>的text()功能

    追加将在每次点击时添加项目。您想要替换每次点击的项目。

    1. pop()将从数组中删除最后一个元素。您需要使用splice()。 Splice收到2个值。首先要删除的索引,要删除的元素数量。
    2. 使用indexOf()我们可以获取数组上的元素索引。

      items.splice(items.indexOf(this.value), 1);
      

      希望这会有所帮助:)

      var items = [];
      $("#button-list button").each(function(index) {
        var toggle = false;
        $(this).on("click", function() {
          toggle = !toggle;
          if (toggle === true)
            items.push(this.value);
          else
            items.splice(items.indexOf(this.value), 1);
      
          //console.log(items);
          $("#results").text(items);
        });
      });
      <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      <div id="button-list">
        <button class="w3-button w3-black" value="(1,1)">(1,1)</button>
        <button class="w3-button w3-black" value="(2,2)">(2,2)</button>
        <button class="w3-button w3-black" value="(3,4)">(3,4)</button>
        <button class="w3-button w3-black" value="(5,2)">(5,2)</button>
        <button class="w3-button w3-black" value="(3,1)">(3,1)</button>
      </div>
      <p id="results"></p>

答案 1 :(得分:1)

&#13;
&#13;
var items = [];

$("#button-list button").on('click', function(e){
  var indexOfElement = items.indexOf(e.target.value);
  //value is not in the array
  if (indexOfElement < 0) {
    items.push(e.target.value);
  } else {
    //value is in the array, remove it
    items.splice(indexOfElement, 1);
  }
  
  $('#results').text(items);
});
&#13;
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="button-list">
  <button class="w3-button w3-black" value="(1,1)">(1,1)</button>
  <button class="w3-button w3-black" value="(2,2)">(2,2)</button>
  <button class="w3-button w3-black" value="(3,4)">(3,4)</button>
  <button class="w3-button w3-black" value="(5,2)">(5,2)</button>
  <button class="w3-button w3-black" value="(3,1)">(3,1)</button>
</div>
<p id="results"></p>
&#13;
&#13;
&#13;