Javascript 函数从窗体中写入所有偶数

Javascript 函数从窗体中写入所有偶数,javascript,forms,function,loops,Javascript,Forms,Function,Loops,我有16个字段的html表单。用户在每个字段中输入数字 函数只能对偶数进行排序并显示它们 //JS函数用于偶数和在段落中打印// 函数evenNumbers(){ 变量编号=document.getElementsByClassName(“formInput”); var i; 对于(i=0;i 函数evenNumbers(){ 变量编号=document.getElementsByClassName(“formInput”); var i; for(i=0;iinnerHTML会在每次执行循环

我有16个字段的html表单。用户在每个字段中输入数字 函数只能对偶数进行排序并显示它们

//JS函数用于偶数和在段落中打印//

函数evenNumbers(){
变量编号=document.getElementsByClassName(“formInput”);
var i;
对于(i=0;i
函数evenNumbers(){
变量编号=document.getElementsByClassName(“formInput”);
var i;

for(i=0;i
innerHTML
会在每次执行循环时覆盖结果。请尝试以下操作:

document.getElementById("even").innerHTML += "Even numbers are: " + numbers[i].value;

首先,您的
else
if
语句中,这是错误的。请检查是否不需要在
for
循环中添加
continue;
,因为您只执行一个操作

还要检查来自表单输入的所有数字是否都是字符串,而不是使用
var num=+numbers[i].value;

最后,我创建了一个数组
evenNumbers
,用于收集所有偶数,并在此基础上使用三元运算符显示消息 -由于数字在一个数组中,因此可以使用
evernumbers.join(',')

代码:

函数evenNumbers(){
变量编号=document.getElementsByClassName('formInput'),
偶数=[];

对于(var i=0,l=numbers.length-1;i将计算与DOM更改混合使用不是一个好主意,对于不同的用例,您可能还需要
evenNumbers

function evenNumbers(numbers) {
  var i;
  var result = [];
  for (i = 0; i <= numbers.length - 1; i++) {
    if (numbers[i].value % 2 == 0) {
      result.push(numbers[i].value);
    }
    return result;
  }

请注意,这是一种通用方法,您可以传递数字,因此您也可以在其他地方重用
函数。

这里是另一个工作示例:

函数evenNumbers(){
document.getElementById('偶数').innerHTML=
'偶数为:'+[…document.getElementsByClassName(“formInput”)]
.filter(x=>x.value&&x.value!='0'&&x.value%2==0)
.map(x=>x.value)
.join(“,”)
}
input{display:block;}


双号

如果
这是错误的,那么首先你的其他人在
里面。其次,你正在使用
=
。这将替换
内部HTML
的值。使用
+=
在表单中添加默认数字将是一个字符串,而不是代码中的数字
数字[i].value
它是一个字符串,如果
statement@YosvelQuintero,谢谢你的建设性批评。我已经删除了else,因为它是不必要的(来自op的问题,我没有给予足够的重视)。数字[I].value确实是一个字符串,但这不是问题,因为它可以与%运算符配合使用。在您的代码中,如果我留下空值或添加字母,则会得到结果:
p,4,w,
function evenNumbers(numbers) {
  var i;
  var result = [];
  for (i = 0; i <= numbers.length - 1; i++) {
    if (numbers[i].value % 2 == 0) {
      result.push(numbers[i].value);
    }
    return result;
  }
  document.getElementById("even").innerHTML = "Even numbers are: " + evenNumbers(document.getElementsByClassName("formInput")).join(",");