2016.3.18__ JavaScript基础_2__第十三天

JavaScript(基础、高级)笔记汇总表【尚硅谷JavaScript全套教程完整版】 尚硅谷最新版JavaScript基础全套教程完整版(140集实战教学,JS从入门到精通) 阅读详情

2016.3.18__ JavaScript基础2_第十三天

如果您觉得这篇文章还不错,可以去H5专题介绍中查看更多相关文章。

这里写图片描述

今日课程预览

这里写图片描述

1.for循环

如果您希望一遍又一遍地运行相同的代码,并且每次的值都不同,那么使用循环是很方便的。

当然,我们可以一遍遍的重复代码。

document.write(cars[0] + "<br>");
document.write(cars[1] + "<br>");
document.write(cars[2] + "<br>");
document.write(cars[3] + "<br>");
document.write(cars[4] + "<br>");
document.write(cars[5] + "<br>");

但是我们程序猿是最讨厌重复性操作的人,让我们写这么多不是逼疯我们么。

所以我们要使用循环。(下面是对循环结构的详细说明,有一定基础的同学可以跳过)

for (var i=0;i<cars.length;i++)
{
document.write(cars[i] + "<br>");
}

1.1 循环详解

下面是对循环结构的详细说明,有一定基础的同学可以跳过。

循环体的结构

for(定义一个循环增量;循环条件;循环增量自加/自减){
    循环体
}

分析一下这个循环结构:

  1. 循环增量: 在这里定义一个循环增量,并赋初值(一般是 0 或者 1)
  2. 循环条件: 这是一个条件表达式,用来判断循环调试是不是满足
  3. 循环增量自加: 在这里,每次循环,之前定义的循环增量都会增加1次
  4. 循环体: 在循环条件成立的前提下,会不断重复循环体中的内容,直至循环条件不成立

注意:写循环的时候一定要注意给出正确的循环条件,否则会造成死循环。

    <!DOCTYPE html>
    <html>
    <body>

    <script>
    cars=["BMW","Volvo","Saab","Ford"];
    for (var i=0;i<cars.length;i++)
    {
    document.write(cars[i] + "<br>");
    }
    </script>

    </body>
    </html>

1.2 跳出循环、中止循环

1.2.1 break

那如果我们想要我们的程序当循环到一个特定的人的时候,不继续进行了,该怎么办?

我们需要使用我们的 break,去跳出当前的循环。

    <script>
        for (var i=0;i<10;i++)
        {
            alert(i);

            if(i > 5){
                break;
            }
        }
    </script>

当 i <= 5 之前,每次循环都去打印 i 的值, 当 i > 5的时候,就直接跳出当前循环。继续向后执行。

1.2.2 continue

当我们想循环到某一个次数之后,我们就不对当前循环内的某些内容执行的时候,我们就可以使用 continue 去跳出当前的循环,继续下一次的循环。

    <script>
        for (var i=0;i<10;i++)
        {
            alert(i);

            if(i > 5){

                alert("执行了continue");

                continue;
            }
            alert("没有执行continue");
        }
    </script>

前5次循环,都打印计数并显示没有执行continue,五次之后就显示执行了continue。

注意:

break是停止整个循环,不管你执行到第几次,直接结束。

continue是跳出当前循环计数时的循环,就好像当我们循环到第5次的时候,执行了 continue,程序会直接结束当前的这次循环,去执行第6次循环。

这一点一定一定要注意!

1.3 其他类型循环

除了for循环(循环代码块一定的次数)之外,还有三种常见循环。

  • for/in - 循环遍历对象的属性

  • while - 当指定的条件为 true 时循环指定的代码块

  • do/while - 同样当指定的条件为 true 时循环指定的代码块

因为其他循环方法,使用场景不多,在这里不做更多介绍。

1.4 for..in.. 循环(拓展)

for..in..循环是 for 循环的一个变种,

它的作用主要是将一个对象的所有属性依次循环出来。

    var o = {
        name: "larra",
        age:20,
        sex:"girl"
    };

    for(var key in o){

        alert(key); //'name','age','sex'

    }

2. input 的 checked 属性

我们在之前的学习过程中已经介绍过了,input 标签设置了类型 checkbox 属性之后,

就变成了一个复选框,选中状态时,checked 属性为 true , 未选中为 false。

那如果我们想要通过点击一个按钮就能去更改是否选中,我们该怎么做呢?

    <!DOCTYPE html>
    <html>

        <head>
            <meta charset="utf-8" />
            <title></title>
        </head>

        <body>
            <input type="button" name="" id="button_1" value="切换" style="width: 50px; height: 10px;"/>
            <input type="checkbox" name="" id="change_1" value="" style="width: 30px; height: 30px; border: 1px solid blue;"/>
        </body>

        <script type="text/javascript">
            var button_1 = document.getElementById("button_1");
            var change_1 = document.getElementById("change_1");

            button_1.onclick = function(){
                if(change_1.checked){
                    change_1.checked = false;
                }
                else{
                    change_1.checked = true;
                }
            }
        </script>
    </html>

可以看见我们点击按钮,我们复选框的属性就发生了改变,很神奇对吧。

那我们接下来配合上面的循环去做个练习,我们来模仿下购物车的原理。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
            input{
                background-color: red;
            }
        </style>
    </head>
    <body>
        <input type="button" name="" id="button_1" value="全选" />
        <input type="button" name="" id="button_2" value="反选" />
        <input type="checkbox" name="" id="change_1" value=""   />
        <ul id="ul_1">
            <!--li*8>input[type=checkbox]-->
            <li><input type="checkbox" /></li>
            <li><input type="checkbox" /></li>
            <li><input type="checkbox" /></li>
            <li><input type="checkbox" /></li>
            <li><input type="checkbox" /></li>
            <li><input type="checkbox" /></li>
            <li><input type="checkbox" /></li>
            <li><input type="checkbox" /></li>
        </ul>
    </body>
    <script type="text/javascript">
        var button_1 = document.getElementById("button_1");
        var button_2 = document.getElementById("button_2");
        var change_1 = document.getElementById("change_1");
        var ul_1 = document.getElementById("ul_1");
        var inputs = ul_1.getElementsByTagName("input");

        button_1.onclick = function(){
            for(var i = 0;i < inputs.length; i++){
                inputs[i].checked = true;
            }
            change_1.checked = true;
        }
        button_2.onclick = function(){
            var number = 0;
            for (var i = 0; i< inputs.length;i++) {
                if(inputs[i].checked == false){
                    number ++;
                }
                inputs[i].checked = !inputs[i].checked;
            }
        }
    </script>
</html>

当然,我写的并不严谨,只是为了让大家有一个基础的概念。更完善的就等大家回去自己尝试了。

3. className 属性

我们也可以通过 className 属性给元素绑定一个class 类型的CSS样式.

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title>Document</title>
        <style type="text/css">
            #button_1{
                width: 200px;
                height: 100px;
                background-color: #ccc;
            }
            .active{
                width: 200px;
                height: 200px;
                background-color: #ddd;
                margin-top: 50px;
            }
        </style>
    </head>
    <body>
        <input type="button" id="button_1" value="显示隐藏" />
        <div id="div_1"></div>
    </body>
    <script type="text/javascript">
        var button_1 = document.getElementById("button_1");
        var div_1 = document.getElementById("div_1");

        button_1.onclick = function(){
            if(div_1.className ==""){
                div_1.className = "active";
            }
            else{
                div_1.className = "";
            }
        }
    </script>
    </html>

4. this 指针

JS 中的 this 指针使用到函数中,首先需要分析 this 所在的函数是被当做哪个对象的方法去调用的。

也就是说,this 存在哪个函数中,谁调用函数就指代谁(即指针指向原对象的地址)。

相当于 Object-C 中的 self。

示例一:

    var obj = {}; 

    obj.x = 100; 

    obj.y = function(){

        alert( this.x ); 

    }; 

    obj.y(); //弹出 100 

这段代码非常容易理解,当执行 obj.y() 时,函数是作为对象obj的方法调用的,因此函数体内的this指向的是obj对象,所以会弹出100。

示例二:

    //ul1是id对应的一个ul列表对象

    ul1.onmouseleave = function(){

   //此处这里面的this就指代ul1对象(this谁调用,就指代谁)
   this.style.display = "none";

    }

同时我们也可以将之前的代码进行一下替换,

    <script type="text/javascript">
        var button_1 = document.getElementById("button_1");
        var change_1 = document.getElementById("change_1");

        button_1.onclick = function(){
            if(this.checked){
                this.checked = false;
            }
            else{
                this.checked = true;
            }
        }
    </script>

我们发现我们的代码并没有出错,这也证明了我们之前所说的 哪个元素绑定了某个函数,这个函数中的 this 关键字就指代哪个元素。

5. 综合练习

预计实现效果:
这里写图片描述

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title>Document</title>
        <style type="text/css">
            .active{
                background-color: #ddd;
            }
            div{
                width: 100px;
                height: 100px;
                background-color: red;
                font-size: 50px;
                color: white;
                display: none;  
            }
            .show{
                display: block;
            }
        </style>
    </head>
    <body>
        <input class="active" type="button" value="按钮1" />
        <input type="button" value="按钮2" />
        <input type="button" value="按钮3" />
        <div class="show">A</div>
        <div>B</div>
        <div>C</div>
    </body>
    <script type="text/javascript">
        //获取所有的切换按钮
        var inputs = document.getElementsByTagName("input");
        //获取所有的 div
        var divs = document.getElementsByTagName("div");
        //遍历所有的按钮,给点击事件绑定函数
        for (var i=0; i<inputs.length;i++) {
            inputs[i].onclick = function(){
                //遍历按钮,找到用户点击的是哪一个按钮
                for (var i=0; i<inputs.length; i++) {
                    //如果第 i 个元素被点击了,则通过 className 属性来绑定对应的 CSS 样式表
                    //这里的 this 代指用户当前点击的按钮
                    if(this == inputs[i]){
                        inputs[i].className = "active";
                        divs[i].className = "show";
                    }
                    //如果不是,就取消所有的样式
                    else{
                        inputs[i].className = "";
                        divs[i].className = "";
                    }
                }
            }
        }
    </script>
    </html>
vue2+vue3 本博客主要为coderwhy的Vue2网课 + 尚硅谷Vue2+Vue3网课,所整理记录的学习笔记,仅作学习用途,如有侵权,烦请联系本人侵删。同时感谢黑马、尚硅谷老师们的辛苦教导付出,如有不足之处,欢迎各位小伙伴、官老爷们多多提意见或建议,感谢! 阅读详情

相关推荐

鸿蒙5.0进阶开发:UI开发-不依赖UI组件的全局自定义弹出框 (openCustomDialog)(推荐)

本文介绍通过入参形式为ComponentContent创建自定义弹出框............

AyomQAQ的博客 1850

js如何将字符串‘https://www.qq.com/s?name=laoxie&age=18&sex=male&‘转成对象?

将字符串'https://www.qq.com/s?name=laoxie&amp;age=18&amp;sex=male&amp;'转成对象{name:'laoxie',age:18,sex:male}输出; var str = 'https://www.qq.com/s?name=laoxie&amp;age=18&amp;sex=male&amp;'; var arr =str.split...

qq_44472790的博客 4910

树莓派驱动步进电机

步进电机一般由电机、驱动器构成,树莓派连接驱动器控制电机。 一、接线 DIR+/- 用于控制方向,PUL+/- 用于控制转动; 正极DIR+ 和 PUL+ 接到GPIO口,两个负极接到GPIO口或地线均可,控制的时候不使用。 实验中,DIR+ 接35口,PUL+ 接38口。 树莓派4B GPIO口如图所示 远离树莓派USB的一侧 是 1、2、3号口 二、驱动 DIR控制方向,使用高电平或低电平控制; PUL控制转动,使用脉冲驱动。 三、代码 import RPi.GPI.

weixin_42337765的博客 1万+

http://www.guccioutletcheaper.com 18

item ?n n? So it is the time for us to wear the comfortabletory burch shoes That way you will be sure that you h...

congashuang3011的博客 9746

从HAL库SPI状态机机制剖析:为什么你的DMA发送会卡在BUSY状态?

本文深入剖析了STM32 HAL库中SPI状态机机制导致DMA发送卡在BUSY状态的常见问题。通过分析状态机设计原理,揭示了混合使用阻塞方式和DMA方式时状态切换冲突的根源,并提供了三种实战解决方案:正确配置SPI中断、使用HAL_SPI_Abort()函数以及手动管理状态机,帮助开发者实现稳定流畅的SPI DMA通信。

bush的博客 268

96.在 Vue 3 中使用 OpenLayers 探究加载 Point、Polygon 的极限

在前端 GIS(地理信息系统)开发中,OpenLayers 作为一个功能强大的 Web 地图库,广泛用于加载地图、渲染矢量数据(点、线、面)、叠加图层等场景。然而,当涉及到。

小彭的博客 1157

http://www.expert-supplements.com/clreplica.html 0

And even the male with bias will remember deeply this red lure After working for Chanel and Yves Saint Laurent c...

cmuvo62668的专栏 8810

各大厂薪资对比爬虫:Python采集OfferShow爆料数据

print(f"⚠️ API返回错误码: {data.get('code')}, msg: {data.get('msg')}")ax.set_title('各大厂薪资对比 (基于OfferShow爆料数据)', fontsize=16, fontweight='bold')stats.columns = ['人数', '平均年薪', '年薪中位数', '年薪标准差', '平均月薪', '平均月数']print(analyzer.get_position_stats('字节跳动').head(10))

2201_76125261的博客 604

http://www.flourtownswimclub.net/cl.html 766677

Carry traditional high for example It is simply finding where you do have interests in common Different parts of...

2058

【ITS模型】基于MATLAB的ITS宽带短波信道模型的建模和仿真

1.软件版本 MATLAB2010b 2.本算法理论知识 对短波信道建模具有里程碑意义的是沃特森在1970年发表的一篇文章,文章中提出了一种静态模型,并在大气中进行了实验验证。 此静态模型可以描述为高斯散射增益抽头延迟线模型,即Watterson模型。 Watterson信道模型是经典的窄带短波信道模型,在这个模型中,信道衰落是瑞利幅度分布,而在每种传播模式中多普勒扩展的功率谱满足高斯分布。Watterson模型没有定义延时扩展的形状,认为各个多径传输模式中不存在延时扩展。其...

FPGA/MATLAB学习教程/源码/项目合作开发 2757

SolidWorks 小车底盘 装配体

通过制作小车底盘了解solidworks装配体的部分知识

及时总结 2229

C Luo accept -200 ℃ cold treatment to eliminate fatigue, wonders! Feel like sex

C Luo accept -200 ℃ cold treatment to eliminate fatigue, wonders! Feel like sex C Luo is a lot of body, known as the "world first body", with the Fernando - Alonso's neck, Boulter's chest and abdomen,

u014731435的专栏 2325

MIPI CPHY学习笔记02:TX物理层一致性测试项解析(HS信令模式)第一部分

在手机、平板等移动设备中,MIPI C-PHY是连接相机、显示屏等高速外设的“数据高速公路”。高速(HS)信令模式就是这条公路的“快车道”,专门用于传输高清图像、视频等大容量数据,既要保证传输速率,又要维持信号稳定。物理层一致性测试是对这条“快车道”的全面质检,确保高速传输下数据不卡顿、不失真。今天我们聚焦MIPI C-PHY TX(发射端)的Group 2 HS信令测试,用通俗语言拆解22个核心测试项(含2个过时项),看懂高速信号的合格标准。

一只豌豆象的博客 292

Javascript 2016-2024 新特性讲解

本文将按时间顺序,详细介绍从 ES2016 到 ES2024 各个版本中引入的重要特性

徐白知识星球 1110

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

jQuery JavaScript Library v3.2.1

/*! * jQuery JavaScript Library v3.2.1 * https://jquery.com/ * * Includes Sizzle.js * https://sizzlejs.com/ * * Copyright JS Foundation and other contributors * Released under the MIT lic...

dianyi3179的博客 1719

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ubuntu18.04 下安装nodejs以及pm2

原文链接:https://dsx2016.com/?p=254 ➢ 前提条件 系统:ubuntu 18.04 环境:纯净版无安装任何其他 ➢ 更新apt-get apt-get update ➢ 安装nodeJs apt-get install nodejs ➢ 检测node版本 尽量是最新稳定版或者接近 ➢ 安装npm 难道不应该是自带的吗? apt...

大师兄 8305

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

PIC18F2685与SLO2016协议在嵌入式通信中的高效应用

嵌入式通信系统设计中,微控制器(MCU)与通信协议的协同优化是提升数据传输效率的关键。PIC18F2685作为Microchip的8位MCU,凭借其宽电压工作范围和硬件CRC加速模块,为工业级通信提供了稳定基础。SLO2016协议作为轻量级通信标准,通过优化的帧结构和零拷贝设计显著降低协议开销。这种组合在115200bps波特率下可实现92%的有效吞吐率,较传统MODBUS提升35%,特别适合工业物联网等需要高可靠性的场景。文章详细解析了硬件配置、协议栈移植及低功耗优化方案,为嵌入式通信开发提供实践参考。

weixin_30546189的博客 305

JS基础总结

文章目录JS基本介绍数据类型对象的基本使用创建一个对象对象是键值对的集合:对象是由属性和方法构成的 (ps:也有说法为:对象里面皆属性,认为方法也是一个属性)对象属性操作获取属性:第一种方式:.语法第二种方式:[ ]语法2种方式的差异:设置属性删除属性通过构造函数创建对象构造函数创建对象的例子:自定义一个构造函数来创建对象构造函数的概念关于new Object()构造函数的执行过程继承JS中继承的...

qq_42778289的博客 510

01-JavaScript基础

第0章 课前说明 0.1 学习方法及态度 没有学不会的知识,只有不努力的傻子!!! 学习的过程很痛苦,不学习的日子是苦难!!! 0.2 学前准备 1:拒绝一阳指和二指禅; 2:打字练习,及格线: 100/分 3:windows中的常用快捷键 0.3 开发工具 0.3.1 浏览器 浏览器是指可以显示网页服务器或者文件系统的HTML文件(标准通用标记语言的一个应用)内容,并让用户与这些文件交互的一种软件。 国内网民计算机上常见的网页浏览器有,QQ浏览器、Internet Explorer、Firefox、.

itwangyang520的博客 2793

Vue2和Vue3的区别到底有哪些?本篇超全总结!

Vue 2.0 发布于 8年前的 2016 年,这是 Vue 成为主流框架过程中的一个重要里程碑。Vue 团队于 2020 年 9 月 18 日发布了 Vue 3.0 版本,2023年12月31日宣布Vue2将停止维护,如今Vue3生态系统正在蓬勃发展,本篇文章将全面介绍Vue2和Vue3到底有什么区别,以及我们如何更高效的使用Vue3来进行项目开发。

weixin_43312391的博客 1万+

JavaScript的基础学习(2)

目录 视频10 关系运算符 视频11 条件运算符 视频12 逻辑运算符 视频13 逻辑运算符 视频14 typeof运算符 视频15 选择结构if 和if else两种用法 视频16 选择结构 视频17 switch结构 视频18 switch结构 视频19 循环结构 视频20 do while 视频21 循环结构for结构 视频22 fo...

一只洒鹿 685

函数式编程在JavaScript中的应用:js-must-watch 2016年Anjana Vakil演讲分析

你是否还在为JavaScript代码的复杂性和可维护性而烦恼?是否想提升代码的可读性和健壮性?本文将深入分析js-must-watch项目中2016年Anjana Vakil的演讲——"Learning Functional Programming with JavaScript",带你了解函数式编程(Functional Programming,FP)的核心概念及其在JavaScript中的实际...

gitblog_00294的博客 908

14.JavaScript基础

文章目录1.js简介2.引入方式3.语法3.1注释3.2结束符4.变量4.1命令规范4.2关键字4.3let演示5.常量6.数据类型7.数值类型7.1定义数值类型7.2数值计算7.3常用方法8.字符类型8.1字符串的定义8.2格式化输出8.3字符换的拼接8.4常用方法1.获取长度2.移除空白3.索引取值4.查找索引5.切片6.大小写转换7.切分8.拼接9.布尔值10.null与undefined11.对象12.数组12.1定义数组12.2常用方法1获取长度2.元素增删3.排序4.拼接5.配合回调函数使用1.

清风 789

JavaScript 基础

ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国际标准。次年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript,这个版本就是1.0版。 该标准一开始就是针对JavaScr...

weixin_34409741的博客 83

生产者消费者模型:互斥量、条件变量与信号量实现详解

并发编程中,线程同步与互斥是核心基础,而生产者消费者模型正是理解这两大概念的经典范例。其原理在于通过共享缓冲区协调多线程读写,利用互斥量保证临界区安全,借助条件变量或信号量实现等待与通知机制。掌握该模型能有效解决死锁、虚假唤醒、CPU空转等高频并发问题,技术价值在于构建稳定高效的多线程协作。它广泛应用于线程池、消息队列、异步日志等场景。本文深入剖析互斥量与条件变量、纯信号量两种主流实现方案,结合C语言与POSIX线程代码,梳理常见陷阱与排查技巧,助你彻底吃透这一并发编程基石。

weixin_34023982的博客 267
上一篇: 2016.3.17__ JavaScript基础_1__第十二天
下一篇: H5学习_番外篇_PHP入门指南
MR_LP
博客等级 码龄11年 236粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值