Javascript 对于a=1;a<;100;a和x2B+;然后创建一个<;br>;当a乘以3时

Javascript 对于a=1;a<;100;a和x2B+;然后创建一个<;br>;当a乘以3时,javascript,html,Javascript,Html,我试图打印一个数字1到3,当它变成3的倍数时,它将创建一个,然后继续打印,直到它符合数字185。 我尝试了这个代码,但它给出了一个错误的答案: for (a = 1; a <= 185; a++) { document.write(" ", a); if (a % 3) { document.write("<br>"); } } for(a=1;a当a不是三的倍数时,这与您想要的相反,并打印出一个。您想要的是: if(a % 3 === 0) 原因 当括

我试图打印一个数字1到3,当它变成3的倍数时,它将创建一个

,然后继续打印,直到它符合数字185。
我尝试了这个代码,但它给出了一个错误的答案:

for (a = 1; a <= 185; a++) {
  document.write(" ", a);
  if (a % 3) {
    document.write("<br>");
  }
}

for(a=1;a当
a
不是三的倍数时,这与您想要的相反,并打印出一个

。您想要的是:

if(a % 3 === 0)
原因

当括号之间的表达式为“truthy”(除
0
false
undefined
null
、空字符串或
NaN
之外的任何内容)时,将执行
if
的主体当
a
不是3的倍数时,
a%3
将是
1
2
,这是“真实的”,当它是3的倍数时,
a%3
将是0,这是“虚假的”。你想要的是相反的

根据上述解释,您也可以使用以下方法:

if (!(a % 3))

,但我要说的是,上面的较长版本更清楚地表达了您的意图,我建议您使用它。

这与您想要的相反,当
a
不是三的倍数时,打印出

。您想要的是:

if(a % 3 === 0)
原因

当括号之间的表达式为“truthy”(除
0
false
undefined
null
、空字符串或
NaN
之外的任何内容)时,将执行
if
的主体当
a
不是3的倍数时,
a%3
将是
1
2
,这是“真实的”,当它是3的倍数时,
a%3
将是0,这是“虚假的”。你想要的是相反的

根据上述解释,您也可以使用以下方法:

if (!(a % 3))
,但我要说的是,上面的较长版本更清楚地表达了您的意图,我建议您使用它。

使用
if(a%3==0)
而不是
if(a%3)


对于(a=1;a使用
if(a%3==0)
而不是
if(a%3)



对于(a=1;a而言,如果a可被3整除,则表达式“a%3”将返回0,如果a不可被3整除,则返回余数

如果x为非零,则测试
if(x)
将计算主体;如果x为零(或类似于零的东西,例如未定义),则将跳过主体(如果存在,则计算else子句)


在case boolean求值案例(如if)中,您最好的选择是非常明确地说明您测试它的目的。在您的案例中,您可能希望显式地测试
if(a%3==0)

如果a可以被3整除,表达式“a%3”将返回0,如果a不能被3整除,则返回余数

如果x为非零,则测试
if(x)
将计算主体;如果x为零(或类似于零的东西,例如未定义),则将跳过主体(如果存在,则计算else子句)


在case boolean求值案例(如if)中,您最好的选择是非常明确地说明您测试它的目的。在您的案例中,您可能希望在if条件中显式地测试
if(a%3==0)

使用%3==0来获得正确的结果。您的其余逻辑都很好

for(a=1;a<=185;a++)
{
document.write(" ",a);
if(a % 3 == 0) /// <----- change is here
{
document.write("<br>");
}
}

对于if条件中的(a=1;a,使用%3==0来获得正确的结果。其余的逻辑是好的

for(a=1;a<=185;a++)
{
document.write(" ",a);
if(a % 3 == 0) /// <----- change is here
{
document.write("<br>");
}
}
用于(a=1;a另一种方式:

(function(){
    var s= [], a= 1;
    while(a<185){
        s.push([a++, a++, a++].join(', '));
    }
    document.write(s.join('<br>\n'));
})();
(函数(){
var s=[],a=1;
而(a另一种方式:

(function(){
    var s= [], a= 1;
    while(a<185){
        s.push([a++, a++, a++].join(', '));
    }
    document.write(s.join('<br>\n'));
})();
(函数(){
var s=[],a=1;

虽然(谢谢你,先生。它也有效。^^这是我近两周的问题。幸好我有机会在这里发布我的问题。谢谢先生。祝你愉快。谢谢先生。它也有效。^这是我近两周的问题。幸好我有机会在这里发布我的问题。谢谢先生。祝你愉快。谢谢你的帮助。先生。如果我可以的话给你一个大大的拥抱,我会给你一个两小时的拥抱。再次感谢先生。祝你今天愉快。谢谢你的帮助。如果我能给你一个大大的拥抱,我会给你两小时。再次感谢先生。祝你一天愉快。谢谢你的回答。先生。我能问一下%3==0和%3==0之间有什么区别吗。我试过了,它给了我一个机器人答案正确,这是正确的。只是想知道在这种情况下,它们都应该工作。在其他情况下,===类似于an==,但也会检查以确保所比较项目的类型相同。在大多数情况下,您会希望使用===。有关更多信息,请参阅谢谢您的回答,先生。我能问一下%3==0与a%3==0。我尝试了它,它给了我正确的答案,这是正确的。只是想知道在这种情况下,它们都应该工作。在其他情况下,===类似于an==,但也会检查以确保所比较的项目的类型是相同的。在大多数情况下,您会希望使用===。有关更多信息,请参阅“不是吗?应该是
s.push
,不是吗?”?