如何在Javascript中为1到1000的奇数和偶数编写脚本?
Posted
技术标签:
【中文标题】如何在Javascript中为1到1000的奇数和偶数编写脚本?【英文标题】:How to do a script for odd and even numbers from 1 to 1000 in Javascript? 【发布时间】:2015-01-10 01:53:36 【问题描述】:我正在研究一本带有已解决示例的 javascript 书籍,但有一个示例没有解决方案。我想知道怎么做...
在javascript(在浏览器中)我应该做的是写1-1000的偶数,完成后写1-1000的奇数......我不知道如何在数字之间添加非常小的“暂停”写以及如何知道第一个周期是否结束并开始写奇数?
我是这样开始的:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>Test</title>
</head>
<body>
<script type="text/javascript">
/* <![CDATA[ */
var i;
for (i = 0; i < 1000; i++)
if ((i % 2) == 0)
document.writeln(i);
/* ]]> */
</script>
</body>
</html>
【问题讨论】:
JavaScript 中没有int
关键字!使用var
关键字。
使用 document.write 是不好的做法...为什么书籍仍然教它...。
可能是因为很多程序员已经习惯了 REPL 并且打印是提供输出的最简单的方法之一。否则,你需要教 DOM
【参考方案1】:
试试这个:
function partA()
for (var i = 0; i < 1000; i++)
if ((i % 2) == 0) document.write(i + ' ');
window.setTimeout(partB,1000)
function partB()
for (var i = 0; i < 1000; i++)
if ((i % 2) !== 0) document.write(i + ' ');
partA();
旁注:
仅将document.write
用于测试。
如果您在加载的 HTML 文档上执行它,所有 HTML 元素都将被覆盖。 (如您在我的示例中所见)
【讨论】:
【参考方案2】:我无法在计数迭代之间暂停。下面的代码代替您的脚本,将为您提供 0-1000 个偶数,然后是赔率,每行 1 个。
网站上已经有一些关于在 javascript 中等待的讨论:What's the equivalent of Java's Thread.sleep() in JavaScript?
<script>
for(var mod = 0; mod<2; mod++)
for (var i = 0; i < 1000; i++)
if ((i % 2) == mod)
document.writeln(i+"<br>");
</script>
【讨论】:
【参考方案3】:你应该试试这样的:
(function()
for (var i = 0; i < 1000; i++)
if ((i % 2) === 0) document. write(i + ' ');
for (var i = 0; i < 1000; i++)
if ((i % 2) !== 0) document. write(i + ' ');
)();
*您只能将document.write
用于测试目的
【讨论】:
是的,我已经注意到了。【参考方案4】:首先,如果你想要从 1 到 1000 的偶数,你的迭代变量应该从 1 开始,而不是 0。:) 要在偶数之后写入奇数,您可以使用 if(i%2==1) 在第一个循环后面放置另一个循环,它应该没问题!
【讨论】:
以及如何在写数字之间添加停顿?结束一个循环后? @Byakugan 如***.com/a/26900201/4241944 :)【参考方案5】:我不确定如何在数字写入之间添加“暂停”以及如何知道第一个周期是否结束并开始写入奇数
使用函数。它也应该在你正在阅读的那本书中。用一个表示偶数,另一个表示奇数。应该有一章是关于事件处理的,你可以在其中使用元素(如按钮)来处理点击。用它来调用函数。
另外,请尝试进一步阅读。 document.write*
功能并不理想,除了在页面加载期间完成的工作。尝试使用更高级的方式写入 DOM。那些..也应该在那本书里。
最后,JavaScript 不会“暂停”,也没有像 sleep
这样的东西。虽然它有计时器,但它的工作方式与sleep
不同。
一个不相关的笔记,我相信你正在使用一本旧书。 “HTML5”只需要“html5 doctype”和<html>
。
<!doctype html>
<html>
...
【讨论】:
【参考方案6】:此处发布的其他解决方案是正确的,但没有理由进行所有的模运算:
function evens ()
var i;
for (i = 2; i <= 1000; i++,i++)
document.writeln(i + '<br>');
;
function odds ()
var i;
for (i = 1; i < 1000; i++,i++)
document.writeln(i + '<br>');
;
evens();
setTimeout(odds, 2000);
【讨论】:
出于好奇,这并不比使用%
运算符检查每个整数快(这两种方法都在 160 毫秒左右执行)。使用你更清楚的那个。【参考方案7】:
function setCode()
var textbox1 = document.getElementById('textbox1');
var textbox2 = document.getElementById('textbox2');
var divResult = document.getElementById('divResult');
var c = ['azimuth','background','background-attachment',
'background-color','background-image',
'background-position','background-repeat',
'behavior','border','border-bottom',
'border-bottom-color','border-bottom-style',
'border-bottom-width','border-collapse',
'border-color','border-left','border-left-color',
'border-left-style','border-left-width','border-right',
'border-right-color','border-right-style',
'border-right-width','border-spacing','border-style',
'border-top','border-top-color','border-top-style',];
var code0 = ( function set(C0)
return ( C0 +=
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[Math.floor(Math.random()*10)])
&& (C0.length == 3) ? C0 : set(C0);
)('');
textbox1.value = code0;
divResult.innerHTML = c[textbox1.value];
var t;
t = setTimeout('setCode()', 1000);
【讨论】:
【参考方案8】: <script type="text/javascript">
var number = 0;
while (number <= 1000)
if (number % 2 === 0)
document.write(number + " is even number <br />");
number = number + 1;
else
document.write(number + " is odd number <br/>");
number = number + 1;
</script>
【讨论】:
不要忘记添加关于答案的描述/详细信息以上是关于如何在Javascript中为1到1000的奇数和偶数编写脚本?的主要内容,如果未能解决你的问题,请参考以下文章