复选框和表单提交与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是分开的