【问题标题】:Remove From array by click append value that selected通过单击附加选择的值从数组中删除
【发布时间】:2018-06-26 13:00:39
【问题描述】:

$("#select-estate").change(function() {
  var singleValues = $("#select-estate").val();
  if (estate.includes(singleValues) == false) {
    estate.push(singleValues);
    $("span.filter-push-select").append('<label class="active">' + singleValues + '<i class="fa fa-times fa-lg" aria-hidden="true"></i></label>');
    console.log(estate);
  }
});
$(".filter-push-select").on('click', 'label', function() {
  var item = $("#select-estate").val();
  var iterator = estate.keys();
  for (let key of iterator) {
    console.log(key); // expected output: 0 1 2
  }

  function removeItem(estate, item) {
    for (var i in estate) {
      if (estate[i] == item) {
        break;
      } else {
        estate.splice(i, 1);
      }
    }
  }
  removeItem(estate, item);
  $(this).remove();
  //estate.splice(index, 1);

  console.log(estate);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="increase" class="form-control" id="select-estate">
  <option disabled selected value="Select">Estate Type</option>
  <option value="ownership">ownership</option>
  <option value="rent">Rent</option>
</select>
<span class="filter-push-select"></span>

我在这个函数上遇到了一个问题,我需要从数组中删除一个我选择的值。

当我选择一个值并单击以将其从附加标签中的数组中删除时,它已正确删除,但是当我选择多个值并尝试从附加标签中删除它时,在删除该值时从数组中单击删除是错误的

【问题讨论】:

  • 如果你创建了jsfiddle,会更好地回答它
  • jsfiddle 不工作
  • "Uncaught ReferenceError: estate is not defined"。错误很明显。
  • 你会选择一个或多个价值多少?
  • 多个值

标签: javascript jquery html arrays


【解决方案1】:

我不太确定你想做什么,但请检查我下面的答案,看看它是否能解决问题。

var estates = []
$("#select-estate").change(function() {
  var singleValues = $("#select-estate").val();
  if (estates.includes(singleValues) == false) {
    estates.push(singleValues);
    $("span.filter-push-select").append('<label class="active">' + singleValues + '<i class="fa fa-times fa-lg" aria-hidden="true"></i></label>');
    console.log(estates);
  }
});

$(".filter-push-select").on('click', 'label', function() {
  var item = $("#select-estate").val();
  var iterator = estates.keys();
  for (let key of iterator) {
    console.log(key); // expected output: 0 1 2
  }

  function removeItem(estate, item) {
    for (var i in estate) {
      if (estates[i] == item) {
        estates.splice(i, 1);
      }
    }
  }
  
  removeItem('ownership', item);
  $(this).remove();

  console.log(estates);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="increase" class="form-control" id="select-estate">
  <option disabled selected value="Select">Estate Type</option>
  <option value="ownership">ownership</option>
  <option value="rent">Rent</option>
</select>
<span class="filter-push-select"></span>

【讨论】:

    【解决方案2】:

    如果我正确地回答了问题,那么这将解决问题。问题不在于拼接位,而在于单击标签元素的适当文本值。 (var item = $(this).text();)

    var estate =[];
    $("#select-estate").change(function() {
      var singleValues = $("#select-estate").val();
      if (estate.includes(singleValues) == false) {
        estate.push(singleValues);
        $("span.filter-push-select").append('<label class="active">' + singleValues + '<i class="fa fa-times fa-lg" aria-hidden="true"></i></label>');
        console.log(estate);
      }
    });
    $(".filter-push-select").on('click', 'label', function() {
      var item = $(this).text();
      var iterator = estate.keys();
      for (let key of iterator) {
        console.log(key); // expected output: 0 1 2
      }
    
      function removeItem(estate, item) {
        let i = estate.indexOf(item)
         if (i > -1) {
         estate.splice(i, 1); 
        }
      }
      removeItem(estate, item);
      $(this).remove();
      //estate.splice(index, 1);
    
      console.log(estate);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      相关资源
      最近更新 更多