Javascript 计算n和m之间所有偶数的总和

Javascript 计算n和m之间所有偶数的总和,javascript,Javascript,我需要计算n和m之间的数字,但是出了点问题,我不知道是什么 函数偶数(){ var n=document.getElementById(“n”).value; var m=document.getElementById(“m”).value; var s=0; 如果(n仅对偶数执行计算,则需要找到除法的余数。除法的余数必须为零 let a = 2; let b = 10; for(let i = a; i <= b; i++){ if (i%2 === 0){ // do s

我需要计算
n
m
之间的数字,但是出了点问题,我不知道是什么

函数偶数(){
var n=document.getElementById(“n”).value;
var m=document.getElementById(“m”).value;
var s=0;

如果(n仅对偶数执行计算,则需要找到除法的余数。除法的余数必须为零

let a = 2;
let b = 10;
for(let i = a; i <= b; i++){
  if (i%2 === 0){
    // do something here even numbers
  }
}
设a=2;
设b=10;

对于(设i=a;i您尝试计算总和,但是,在while循环中,您没有将其添加到总和中,并尝试警告
n.value
m.value
,因为此处没有
value
属性,因此
未定义

您可以为相同(AP)定义逻辑,而不是循环

函数偶数(){
//将值转换为数字,否则将是字符串
var n=parseInt(document.getElementById(“n”).value);
var m=parseInt(document.getElementById(“m”).value);
如果(n>m)[n,m]=[m,n];//在n中存储较小的数字
n=(n%2==0)?n:n+1;//查找第一个偶数
m=(m%2==0)?m:m-1;//查找最后一个偶数
var s=0;//将sum初始化为0
如果(m>=n){
var numbers=(m-n)/2+1;//范围内偶数的数目
/*理解这个公式。它是n的基本算术级数
*数字,第一个数字是a,最后一个数字是l
*等于(a+(n-1)d,其中
*为d。总和为n/2(a+l)=>n/2(a+a+(n-1)d)
*=>n/2(2a+(n-1)d)。当d为2时,方程变为
*n/2(2a+(n-1)2)=>n(a+n-1)*/
s=数字*(n+数字-1);
}
警报;
}




单击我!
尝试以下操作:

if (n < m) {
    for (let i = n; i <= m; i++) {
        if (i%2 === 0)
            s += i;
    }

} else {
    for (let i = m; i <= n; i++) {
        if (i%2 === 0)
            s += i;
    }
}
if(n对于(设i=n;i我将数字取为10和3,我不考虑循环中的两个数字,因为您要求这两个数字之间的偶数之和。我将总和取为0。我使用三元运算符找到了最高和最低数字。使用for循环,我找到了偶数整数并将它们相加

        var x=10;
        var y=3;
        var higher=x>y?x:y;
        var lower=x>y?y:x;
        var sum=0;
        for(var i=lower+1;i<higher;i++){
            if(i%2==0){
                sum+=i;
            }
        }
    console.log("sum is"+sum)
var x=10;
变量y=3;
var较高=x>y?x:y;
var lower=x>y?y:x;
var总和=0;

对于(var i=lower+1;i,除非特别要求使用循环,否则应使用算术级数和的公式

函数偶数(){
设n1=编号(document.getElementById(“n”).value);
设n2=编号(document.getElementById(“m”).value);
如果(n1>n2)[n1,n2]=[n2,n1];
n1=2*数学单元(n1/2);
n2=2*数学楼层(n2/2);
如果(n1>n2)返回0;
返回(n1+n2)*((n2-n1)/2+1)/2;
}





单击我!
这是什么问题?比较字符串和使用字符串计算可能会导致意外结果。我打赌有一个公式可以在不使用循环的情况下执行此操作。首先,要检索偶数,我认为这是一种更好的方法:n%2使用
var n=document.getElementById(“n”)获取值.value;
并将其与
警报(n.value)
一起显示,.value已被使用,并且在
警报()中未定义
感谢您提供这段代码片段,它可能会提供一些有限的、即时的帮助。A通过说明这是一个很好的问题解决方案的原因,并使其对未来读者提出其他类似问题更有用。请您的回答添加一些解释,包括您所做的假设。@shamsherKhan哦,我理解您的回答。@shamsherKhan呃。我只是觉得它需要改进。代码片段不是用来理解代码的。它是一种让观众轻松检查代码的方式。@shamsherKhan,这是一种有点自命不凡的说法,当他们有js金徽章时,他们不理解。@shamsherKhan。我不想道歉,但请记住,并不是每个人都这么认为要求你改进答案,因为他们不理解。有些人更喜欢看到写得好的答案,而不是只“有效”的答案,但没有解释。@Cerburs-答案已更新为更具解释性。谢谢你,Ryan。这样,答案对未来的访问者也很有帮助。很高兴在这里看到正确的方法,使用公式而不是“愚蠢”/“幼稚”循环。