JavaScript基础【数组-for循环】(五)

一、数组

//数组是一种有序的数据格式.(纯对象是无序的)用arr存储了3个数据,1,2,3const arr = [1,2,3];let x = 1;let y = 2;let z = 3;
  • 创建数组方法
        1.let arr = [1, 2, 3];2.let arr = new Array(1, 2, 3);
//   class01表示一个数组.// '张三', '王五', '李四', '赵六 => 数组的成员(元素).// 每个元素之间用,隔开. 书写时,后面有空格.const class01 = ['张三', '王五', '李四', '赵六'];// 通过下标(索引)来访问数组的元素.// 数组的下标默认从0开始,依次+1.// 下标 => 元素的门牌号.console.log(class01[3]);console.log(class01[2]);console.log(class01[1]);console.log(class01[0]);
  •  数组的长度(.length)
// length属性表示数组的元素个数.(也是数组的长度)console.log(class01.length);

增删改查
     增 => 数组[下标] = 新的值
     改 => 数组[下标] = 新的值
     查 => 数组[下标] 

    // 在最后的位置插入一个新元素.class0621[4] = '小陈';// 5-9的位置没有元素.这时数组的length是11而不是6.有5个空的元素.class0621[10] = '小邓';// 不存在的元素,空的元素,返回undefined.(访问对象不存在的属性也是undefined)console.log(class0621[5]);// 修改第一个元素class0621[0] = '小张';

二、获取元素

111222333444555

 querySelectorAll参数是选择器 => 获取匹配选择器的所有元素.

    然后返回一个存储着这些元素的数组.

    aDiv就是一个存储着5个div的数组.

  • 单个标签推荐o开头,数组推荐用a开头.
    const aDiv = document.querySelectorAll('div');
  •  通过aDiv可以访问所有的标签
    console.log(aDiv);
  • 通过下标访问对应的标签 
    console.log(aDiv[2]);
  • 通过下标修改指定标签样式.
aDiv[2].style.backgroundColor = 'red';
  • 获取的标签个数
    console.log(aDiv.length);

不能通过aDiv新增元素来在页面上新增标签。

页面上不会多出一个标签。

aDiv[5] = '666';

三、其他获取元素方法

111222333444555
  • getElementsByTagName 的参数是标签名.
  • 能够获取指定标签的元素.
  • document.getElementsByTagName('div') => 只获取div标签
    const aDiv = document.getElementsByTagName('div');console.log(aDiv.length);
  • 获取匹配选择器.active的所有标签。
    const aActive = document.querySelectorAll('.active');console.log(aActive);

getElementsByClassName => 参数是类名.

    const aBox = document.getElementsByClassName('active');console.log(aBox);

四、获取元素

pppp

如果想要获取第一个div内的5个input,那么我们要怎么去获取?

  • document => 整个页面 
  • document.querySelectorAll('[type="text"]') => 在整个页面中找input
 const aInput = document.querySelectorAll('[type="text"]');    console.log(aInput);// 7个
    const aDiv = document.querySelectorAll('div');
  • 在第一个div中找input 
    const aIn = aDiv[0].querySelectorAll('input');console.log(aIn);// 5个
  • 在第一个div中找input标签
    const aIn = aDiv[0].getElementsByTagName('input');console.log(aIn);// 5个
  • 在第一个div中找类是active的标签. 
    const aIn = aDiv[0].getElementsByClassName('active');console.log(aIn);// 5个

五、单个元素的数组

11111
     // document.getElementsByClassName('active');// document.getElementsByTagName('div');const aDiv = document.querySelectorAll('div');// 只有一个元素,aDiv也是一个数组console.log(aDiv);
// 访问唯一的元素,也必须添加下标.// 通过下标修改标签背景色// aDiv[0].style.backgroundColor = 'red';// 修改数组的style属性的backgroundColor属性// 数组是没有style属性的,隐藏style属性是undefined.// 通过undefined修改backgroundColor属性,会报错.// Cannot set property 'backgroundColor' of undefined(报错信息)aDiv.style.backgroundColor = 'red';console.log(aDiv.style);

六、循环

循环 => 批量处理相同的代码逻辑 => 可以减少重复的代码。

  • 语法 => for (表达式1表达式2表达式3) { 重复执行的代码 }
  • 循环什么时候会停止? => 表示式2返回false,循环就停止.返回true就一直循环.
  • 永远停不下来的循环 => 死循环.
    console.log(100);console.log(100);console.log(100);console.log(100);console.log(100);//列如几段没有用for循环来优化,则会出现很多的重复代码
  • 表达式1 => 从几开始数数
  •     表达式2 => 数到几
  •     表达式3 => 几个几个数
  •     let i = 0 => 从0开始数
  •     i < 5 => 数到4
  •     i++ => 一个一个数
for (let i = 0; i < 5; i++) {console.log(100);}
for (let i = 10; i < 15; i++) {console.log(100);}
for (let i = 10; i < 20; i += 2) {console.log(100);}
for (let i = 15; i > 10; i--) {console.log(100);}
 // 从20开始倒着数,每次数-2.for (let i = 20; i > 10; i -= 2) {console.log(100);}

七、循环计数

 以下三种形式,前两种是用简单的硬代码来写最后一种用for循环,可想而知使用for循环代码量的简化也会大大提高了工作效率。

    // console.log(100);// console.log(200);// console.log(300);// console.log(400);// console.log(500);//硬代码// let i = 1;// console.log(100 * i);// i++;// console.log(100 * i);// i++;// console.log(100 * i);// i++;// console.log(100 * i);// i++;// console.log(100 * i);// 循环中的变量i => 循环计数// 每次循环,i的值都会变化.// i的值如何变化,取决于第三个表达式.for (let i = 1; i < 6; i++) {console.log(i);// 1,2,3,4,5console.log(100 * i);}
 let arr = ['张三', '李四', '王五', '赵六'];// console.log(arr[0]);// console.log(arr[1]);// console.log(arr[2]);// console.log(arr[3]);// let i = 0;// console.log(arr[i]);// i++;// console.log(arr[i]);// i++;// console.log(arr[i]);// i++;// console.log(arr[i]);for (let i = 0; i < 4; i++) {console.log(arr[i]);}
    //硬代码表示方式console.log('你1');console.log('我2');console.log('他3');console.log('你4');console.log('我5');console.log('他6');console.log('你7');console.log('我8');console.log('他9');
    let arr = ['你', '我', '他'];for (let i = 1; i < 10; i++) {console.log(arr[(i-1) % 3] + i);}for (let i = 0; i < 3; i++) {console.log('你' + (i * 3 + 1));console.log('我' + (i * 3 + 2));console.log('他' + (i * 3 + 3));}for (let i = 1; i < 10; ) {console.log('你' + i++);console.log('我' + i++);console.log('他' + i++);}

八、循环时如何运行的

for (表达式1;表达式2;表达式3) { 表达式4 };

    以上表达式的执行顺序如何的?

    表达式1 => 表达式2 => 表达式4 => 表达式3 => 表达式2 => 表达式4 => 表达式3 => .... => 直到表达式2返回false...

for (let i = 0; i < 3; i++) {console.log(i);// 0,1,2}

   //硬代码表示方式let i = 1;i < 10;console.log('你' + i++);console.log('我' + i++);console.log('他' + i++);i < 10;console.log('你' + i++);console.log('我' + i++);console.log('他' + i++);i < 10;console.log('你' + i++);console.log('我' + i++);console.log('他' + i++);
    // i < 10 => false 停止循环打印for (let i = 1; i < 10;) {console.log('你' + i++);console.log('我' + i++);console.log('他' + i++);}

九、continue

continue => 跳过当前循环,继续后面的循环。

    let arr = [1,2,3,4,5];for (let i = 0; i < 5; i++) {if (i == 2) {// 跳过当前循环,不执行continue后面的代码。后续循环还继续执行。continue;}console.log(arr[i]);}

 硬代码表示方法。

    let i = 0;if (i != 2) {console.log(arr[i]);}i++;if (i != 2) {console.log(arr[i]);}i++;if (i != 2) {console.log(arr[i]);}i++;if (i != 2) {console.log(arr[i]);}i++;if (i != 2) {console.log(arr[i]);}

十、break

      break => 终止整个循环。 

     let arr = [1,2,3,4,5];for (let i = 0; i < arr.length; i++) {console.log(arr[i]);// 下标是2时,就终止整个循环。(提前结束循环)if (i == 2) {break;}}

当一个死循环一直循环时,可以用上break来直接终止整个循环。 

for (;;) {// 返回true表示用户点击确定,返回false表示用户选择取消let flag = confirm('你喜欢我吗?');// 如果用户点击确定,就终止这个死循环.if (flag) {alert('我也喜欢你');break;}}

十一、循环处理DOM



1111122222

十二、循环添加事件

  • 11111
  • 22222
  • 33333
  • 44444
  • 55555
  • 66666

 for循环表达方式

 硬代码表达方式

    aLi[0].onclick = function() {alert(aLi[0].innerText)}aLi[1].onclick = function() {alert(aLi[1].innerText)}aLi[2].onclick = function() {alert(aLi[2].innerText)}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部