循环的标准 for (initializer; exit-condition; final-expression) { // code to run } 关键字for,后跟一些括号。 在括号内,我们有三个项目,以分号分隔: 一个初始化器 - 这通常是一个设置为一个数字的变量,它被递增来计算循环运行的次数。它也有时被称为计数变量。 一个退出条件 -如前面提到的,这个定义循环何时停止循环。这通常是一个表现为比较运算符的表达式,用于查看退出条件是否已满足的测试。 一个最终条件 -这总是被判断(或运行),每个循环已经通过一个完整的迭代消失时间。它通常用于增加(或在某些情况下递减)计数器变量,使其更接近退出条件值。 一些包含代码块的花括号 - 每次循环迭代时都会运行这个代码。 <main> <p id="for_test"></p> </main> <script> var cats = ['Bill', 'Jeff', 'Pete', 'Biggles', 'Jasmin']; var info = 'My cats are called '; var para = document.querySelector('#for_test'); // // for (var i = 0; i < cats.length; i++) { // info += cats[i] + ','; // } // para.textContent = info for (var i = 0; i < cats.length; i++) { if (i === cats.length - 1) { info += 'and ' + cats[i] + '.'; } else { info += cats[i] + ', '; } } para.textContent = info </script> <main> <label for="search"> Please by contact name:</label> <input id="search" type="text"> <button>Search</button> <p></p> </main> 使用break退出循环 如果要在所有迭代完成之前退出循环,可以使用break语句。 当我们查看switch语句时,我们已经在上一篇文章中遇到过这样的情况 - 当switch语句中符合输入表达式的情况满足时,break语句立即退出switch语句并移动到代码之后。 与循环相同 - break语句将立即退出循环,并使浏览器移动到跟随它的任何代码。 <script> //定义数组 var contacts = ['Chris:2232322', 'Sarah:3453456', 'Bill:7654322', 'Mary:9998769', 'Dianne:9384975']; //声明变量 var para = document.querySelector('p'); var input = document.querySelector('input'); var btn = document.querySelector('button'); //EventTarget.addEventListener() 方法将指定的监听器注册到 EventTarget 上,当该对象触发指定的事件时,指定的回调函数就会被执行 btn.addEventListener('click', function () { //获取输入内容 var searchName = input.value; //清空 input.value 变量 input.value = ''; //将鼠标聚焦在input input.focus(); //开始循环 for (var i = 0; i < contacts.length; i++) { //以分号为分隔符 ,将每个字典 分割为数组,而进行获取 name var contactsName = contacts[i].split(':'); if (searchName === contactsName[0]){ para.textContent = contactsName[0] + '\'s number is ' + contactsName[1] + '.'; break } else { para.textContent = 'Conttact not found.' } } }); </script> 使用continue跳过迭代 continue语句以类似的方式工作,而不是完全跳出循环,而是跳过当前循环而执行下一个循环。 我们来看另外一个例子,它把一个数字作为一个输入,并且只返回开平方之后为整数的数字(整数)。 <main> <label for="search"> Please intput a number:</label> <input id="search" type="text"> <button>Submit</button> <p></p> </main> <script> var num = input.value; var para = document.querySelector('p'); for (var i = 1; i <= num; i++) { //获取 i 的平方根 var sqRoot = Math.sqrt(i); //判断 i 的平方根是不是一个整数 if (Math.floor(sqRoot) !== sqRoot) { //如果不是跳过 continue; } //如果是 para.textContent += i + ' '; } while语句和do ... while语句 for 不是JavaScript中唯一可用的循环类型。 实际上还有很多其他的,而现在你不需要理解所有这些,所以值得看几个人的结构,这样你就可以在稍微不同的方式识别出相同的功能。 首先,我们来看看while循环。 这个循环的语法如下所示: initializer while (exit-condition) { // code to run final-expression } var i = 0; while (i < cats.length) { if (i === cats.length - 1) { info += 'and ' + cats[i] + '.'; } else { info += cats[i] + ', '; } i++; } do...while循环非常类似但在while后提供了终止条件: //do 中的代码总是要执行一次 ,才进行while 判断 var i = 0; do { if (i === cats.length - 1) { info += 'and ' + cats[i] + '.'; } else { info += cats[i] + ', '; } i++; } while (i < cats.length); <script> //两种方式实现相同效果
var output = document.querySelector('.output');
for (var i = 10; i >= 0; i--) {
var para = document.createElement('P');
output.appendChild(para);
if (i === 10 ) {
para.textContent = 'Countdown 10';
} else {
para.textContent = i;
}
}
var para = document.createElement('P');
output.appendChild(para);
para.textContent = 'Blast off!';
// var output = document.querySelector('.output'); output.innerHTML = ''; var i = 10; while(i >= 0) { var para = document.createElement('p'); if(i === 10) { para.textContent = 'Countdown ' + i; } else if(i === 0) { para.textContent = 'Blast off!'; } else { para.textContent = i; } output.appendChild(para); i--; }