Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
复选框和表单提交与onChange方法Javascript不兼容_Javascript_Html_Methods_Onchange - Fatal编程技术网

复选框和表单提交与onChange方法Javascript不兼容

复选框和表单提交与onChange方法Javascript不兼容,javascript,html,methods,onchange,Javascript,Html,Methods,Onchange,我的脚本中有一个字符串数组,我有两个函数,一个用于按最大和最小长度过滤字符串,另一个用于根据字符串的字符排除某些字符串。这两种方法不能很好地协同工作,当我取消选中它们时,它们不会显示适当的数组 这是我的密码: <div id="demo"> </div> <div class="item"> <form id="aForm" onchange="filter()"> <input type="checkbox" id="A" va

我的脚本中有一个字符串数组,我有两个函数,一个用于按最大和最小长度过滤字符串,另一个用于根据字符串的字符排除某些字符串。这两种方法不能很好地协同工作,当我取消选中它们时,它们不会显示适当的数组

这是我的密码:

<div id="demo"> </div>
<div class="item">
  <form id="aForm" onchange="filter()">
    <input type="checkbox" id="A" value="A">Exclude words with 'A'
    <br>
    <input type="checkbox" id="E" value="E">Exclude words with 'E'
    <br>
    <input type="checkbox" id="O" value="O">Exclude words with 'O'
    <br>
  </form>
</div>
<div class="item" id="length">
  <form id="oForm">
    <input type="text" name="minLength" size="2" />Minimum Lenght
    <br>
    <input type="text" name="maxLength" size="2" />Maximum Length
    <br>
    <input type="button" value="Update" onclick="updateLength()">
  </form>
</div>
这里是我的脚本:

 <script type="text/javascript">
  var animals = ["Bear", "Mouse", "Cat", "Tiger", "Lion"];

  function filter() {
    var a = document.getElementById('A').checked,
      e = document.getElementById('E').checked,
      o = document.getElementById('O').checked,
      result2; //make a copy

    var copy2 = document.getElementById("demo").innerHTML;
    var array = copy2.split(" ");

    result2 = array.filter(function(value) {
      value = value.toLowerCase();
      return (!a || value.indexOf('a') == -1) && (!e || value.indexOf('e') == -1) && (!o || value.indexOf('o') == -1);
    })
    document.getElementById("demo").innerHTML = result2;
  }
  filter();

  function updateLength() {
    minLength = oForm.elements["minLength"].value;
    maxLength = oForm.elements["maxLength"].value;
    var result = [];
    var copy2 = document.getElementById("demo").innerHTML;
    var array = copy2.split(" ");
    for (var i in array) {

      if (minLength <= array[i].length && array[i].length <= maxLength) {
        result += " " + array[i];
      }
      document.getElementById("demo").innerHTML = result;
    }
  }
  updateLength();
</script>

将updateLength函数放在filter函数之外,并将onchange侦听器放在所有输入上,而不是窗体上。表单本身的状态不变,输入不变。

为什么表单中有表单?这两种方法不能很好地协同工作。你能说得更具体些吗?你看到了什么问题?控制台中是否抛出任何错误?您希望看到什么是您没有看到的?当我检查以排除带有E的字符串时,我会得到相应的字符串,然后当我按值筛选时,我不会得到任何字符串,即使有stringsudateLength和filter是分开的