Javascript 函数从窗体中写入所有偶数
我有16个字段的html表单。用户在每个字段中输入数字 函数只能对偶数进行排序并显示它们 //JS函数用于偶数和在段落中打印//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会在每次执行循环
函数evenNumbers(){
变量编号=document.getElementsByClassName(“formInput”);
var i;
对于(i=0;i
函数evenNumbers(){
变量编号=document.getElementsByClassName(“formInput”);
var i;
for(i=0;iinnerHTML
会在每次执行循环时覆盖结果。请尝试以下操作:
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(",");