在首次执行代码JavaScript时将永久值存储在变量中

问题描述 投票:0回答:1
function filterListBox() {
  debugger;
  var txtValue = document.getElementById('<%=txtSearchUser.ClientID %>').value; //to get entered value to search
  var lstbox = document.getElementById('<%=lstMembers.ClientID %>');
  var opt;
  var array = new Array();
  var array1 = new Array();
  array = lstbox.options; //array value is 8

  if (txtValue != '') {
    for (var i = 0; i < array.length; i++) {
      if (array[i].innerText.toLowerCase().indexOf(txtValue) > -1) {
        opt = document.createElement("option");
        opt.text = array[i].text;
        opt.value = array[i].value;
        array1.push(opt); // only pushes names that match the search filter

      }

    }
    lstbox.options.length = 0;
    for (var i = 0; i < array1.length; i++) {
      opt = document.createElement("option");
      opt.text = array1[i].text;
      opt.value = array1[i].value;
      lstbox.add(opt); // displays the pushed names that matched the search filter
    }

  }
  else {
    lstbox.options.length = 0;
    for (var i = 0; i < array.length; i++) {
      opt = document.createElement("option");
      opt.text = array[i].text;
      opt.value = array[i].value;
      lstbox.add(opt);
    }
  }

}

在上面的代码中,当我第一次运行代码时,变量array的值是8.但是当它进入if(txtValue != '')时,它开始过滤名称并仅推送array1中与输入值匹配的名称(txtValue)。然后它只显示那些名称。

这里的问题是,当我为txtValue输入另一个值时,它在更新的数组选项中搜索该值,而不是原始数组。所以返回的结果不正确。我谦虚地要求一个解决方案将数组重置为其原始选项并搜索整个数组而不是更新的数组。

谢谢。任何帮助深表感谢。

javascript c# arrays
1个回答
1
投票

首先将选项复制到永久阵列,然后使用它。

var lstbox, allOptions;
document.addEventListener("DOMContentLoaded", function(event) {
    lstbox = document.getElementById('<%=lstMembers.ClientID %>');
    allOptions = Array.from(lstbox.options);
});

更改

array = lstbox.options;

对此

array = allOptions;
© www.soinside.com 2019 - 2024. All rights reserved.