zoukankan      html  css  js  c++  java
  • Web开发基础之JavaScript

      JavaScript是什么

      JavaScript是一种运行在客户端(浏览器) 的编程语言,用来给网页添加动态功能。

      JavaScript的历史

      http://www.w3school.com.cn/js/pro_js_history.asp

      JavaScript的作用

      一,最初目的

      为了处理表单的验证操作

      二,现在广泛的应用场景

      1. 网页特效

      2. 服务端开发(Node.js)

      3. 命令行工具(Node.js)

      4. 桌面程序(Electron)

      5. App(Cordova)

      6. 游戏开发

      JavaScript和HTML CSS的区别

      HTML:提供网页的结构和内容

      CSS:修饰和美化内容

      JavaScript:控制页面内容,增加页面动态效果

      JavaScript的组成

      

      ECMAScript - JavaScript的核心

      ECMAScript 是 JavaScript 的核心,描述了语言的基本语法和数据类型,ECMAScript是一套标准,定义了一种语言的标准与具体实现无关(就是 JavaScript 的语法规范)

      BOM - 浏览器对象模型

      一套操作浏览器功能的 API

      通过BOM可以操作浏览器窗口,比如:弹出框、控制浏览器跳转、获取分辨率等

      DOM - 文档对象模型

      一套操作页面元素的 API

      DOM 可以把 HTML看做是文档树,通过 DOM 提供的 API 可以对树上的节点进行操作

      JavaScript的书写位置

      JavaScript书写位置和CSS类似(行内样式、嵌入样式、外部样式)

      写在行内

    <input type="button" value="按钮" onclick="alert('Hello World')" />
    

      写在script标签内

    <head>
      <script>
        alert('Hello World!');
      </script>
    </head>
    

      写在外部js文件中,在页面中引入使用

    <script src="main.js"></script>
    

      注意

      引入外部js文件的script标签中,不可以写javaScript代码在</body>之前

      css在头部引入,js文件在底部引入

      示例

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>js的书写位置</title>
    </head>
    <body>
        <!-- js的行内写法 -->
        <button onclick="alert('点到我了')">别点我</button>
        <button id="btn">就点你</button>
        <script>
            // 内部js写法
            document.getElementById('btn').onclick=function(){
                alert("就点你")
            }
        </script>
    </body>
    </html>
    

      JavaScript的基本语法

      1,变量

      1.1变量的定义

      在js中使用var关键字定义变量

      变量的语法

    var age = 18;
    var userName = 'linux'; 
    

      同时声明多个变量

    var age, name, sex;
    age = 18;
    name = 'centos'
    

      同时声明多个变量并赋值

    var age = 23, name = 'shell';
    
      1.2变量的命名规则和规范

      规则 - 必须遵守的,不遵守会报错

      - 由字母、数字、下划线、$符号组成,不能以数字开头

      - 不能是关键字和保留字,例如:for、while。

      - 区分大小写

      规范 - 建议遵守的,不遵守不会报错

      - 变量名必须有意义

      - 遵守驼峰命名法。首字母小写,后面单词的首字母需要大写。例如:userName、userPassword

      2,数据类型

      常用的数据类型为:Number、String、Boolean

      2.1 Number类型

      100 183.5

      2.2String类型

      字符串是用引号括起来的一段内容

      ‘linux’’centos’ ‘sa’ ‘devops’

      javaScript中的字符串,单双引号都可以使用,推荐使用单引号

      转义字符

       字符串长度

      length属性可以用来获取字符串的长度

    var str = “我是一个运维人员”
    console.log(str.length);
    

      字符串的拼接

      字符串可以通过+拼接

    console.log(‘linux’+’centos’);
    

      boolean类型

      字面量:true和false

      数据类型总结示例

    #4_变量和数据类型.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        
        <title>Document</title>
    </head>
    <body>
        <script>
            // 声明变量并赋值
            // 字符串
            var name = 'devops';
            // 数字
            var age = 18;
            // 布尔
            var sex = true;
            // 打印对应变量的类型
            console.log(typeof(name), typeof(age), typeof(sex))
            // string number boolean
            // 打印对应变量的值
            console.log(name, age, sex)
            // devops 18 true
            // 打印字符串长度
            console.log(name.length)
            // 6
            // 字符串拼接
            console.log(name + 'linux')
            // devopslinux
        </script>
    </body>
    </html>
    

      打开页面按F12进入调试模式可以看到console.log的输出结果

       3,注释

      单行注释

    // 这是一个变量
    var name = 'linux'
    

      多行注释

    /*
    注释内容
    */
    

      4,运算符

      运算符(operator),非常类似于数学中的运算符

    +  加
    -   减
    *   乘
    /   除
    % 取余 
    

      示例

      <script>
                var a = 100;
                var b = 50;
                console.log(a+b)
                console.log(a-b)
                console.log(a/b)
                console.log(a*b)
                console.log(a%b)
            </script>
    

      自增自减运算符

      前置++和后置++的区别

    <script>     
    // 自增自减运算符
                // 先输出再执行+1
                console.log(a++) 
                // 100
                console.log(a)
                // 101
                // 先执行+1再执行打印
                console.log(++b)
                // 51    
    </script>
    

      逻辑运算符

    && 与  两个操作数同时为true,结果为true,否则都是false   一损俱损
    || 或  两个操作数有一个为true,结果为true,否则为false
    !  非  取反
    

      

    <script>       
     // 逻辑运算符
                console.log(true)
                console.log(false)
                console.log(true && true)
                console.log(false || false)
                console.log(!false)        
    </script>
    

      比较运算符

    <  >  >=  <=  == != === !==
    

      ==与===的区别:

      ==只进行值得比较===类型和值同时相等,则相等

      示例

    console.log(1===1)  // true
    console.log('1'==1) // 比较值 字符串和数字对比 true
    console.log('1'===1) // false 比较值和数据类型 都匹配才为true
    

      赋值运算符

    =   +=   -=   *=   /=   %=
    

      先运算,再赋值

      分支结构

      分支语句,一般用来判断不同的多种情况,并在代码块中进行对应处理。

      if语句

      1,单分支语句(if)

    if (/* 条件表达式 */) {
      // 执行语句
    }
    

      示例

      <script>
            var age = 18;
            if(age >= 18){
                console.log('已经成年')
            } 
            else {
                console.log('未成年')
            }
        </script>
    

      双分支语句

      语法

    if (/* 条件表达式 */){
      // 成立执行语句
    } else {
      // 否则执行语句
    }
    

      多分支语句

      语法

    if (/* 条件1 */){
      // 成立执行语句
    } else if (/* 条件2 */){
      // 成立执行语句
    } else if (/* 条件3 */){
      // 成立执行语句
    } else {
      // 最后默认执行语句
    }
    

      switch语句

      语法

    switch(n)
    {
    case 1:
      执行代码块 1
      break;
    case 2:
      执行代码块 2
      break;
    default:
      n 与 case 1 和 case 2 不同时执行的代码
    }
    

      示例

       <script>
            // var age = 18;
            // if(age >= 18){
            //     console.log('已经成年')
            // } 
            // else {
            //     console.log('未成年')
            // }
            // 获取今天是星期几的数字 从1-7
            var day = new Date().getDay()
            // console.log(day)
            switch(day){
                case 1:
                    console.log("今天是星期一")
                    break;
                case 2:
                    console.log("今天是星期二")
                    break;
                case 3:
                    console.log("今天是星期三")
                    break;
                case 4:
                    console.log("今天是星期四")
                    break;
                case 5:
                    console.log("今天是星期五")
                    break;
                case 6:
                    console.log("今天是星期六")
                    break;
                default:
                    console.log("今天是星期天")
            }
            
        </script>
    

      运行结果

       循环结构

      for循环

      语法

    for (初始化表达式1; 判断表达式2; 自增表达式3) {
      // 循环体4
    }
    

      示例

    <body>
        <script>
            for(var i=1;i<10;i++){
                console.log('这是重复第'+i+'次')
            }
        </script>
     
    </body>
    

      输出

       在页面查看循环过程

      浏览器为edge

      按F12打开调试模式

     

     

     

     

     

     

       以此类推一直执行到i的值为10退出循环

      while循环

    // 当循环条件为true时,执行循环体,
    // 当循环条件为false时,结束循环。
    while (循环条件) {
      //循环体
    }
    

      示例

      <script>
     
            // while循环
            i = 1
           while (i<10){
                console.log('这是重复第'+i+'次');
                 i++;
             }
     
       </script>
    

      

      do...while循环

    do {
      // 循环体;
    } while (循环条件);
    

      示例

      <script>
            // do..wuile循环
            j = 1
            do {
                console.log('这是重复第'+j+'次');
                j++;
            } while (j<10)
        </script>
    

      注意: do...while和while使用上非常像,区别在于do...while不管条件是否成立,会执行一次操作。也就是先操作后判断。while是先判断再执行

        一般情况使用for最多

      continue和break关键字

      break:立即跳出整个循环,即循环结束,开始执行循环后面的内容(直接跳到大括号)

      continue:立即跳出当前循环,继续下一次循环(跳到i++的地方)

      数组

      数组是一个有序的列表,可以在数组中存放任意数据,并且数组的长度可以动态调整。

      数组的定义

      语法

    //创建一个空数组
    var arr = [];
    //创建一个数字的数组
    var arr1 = [1,2,3,4,5];
    //创建包含字符串的数组
    var arr2 = [‘linux’,’centos’,’redhat’];
    

      数组示例

     <script>
            // 定义数组
            var arr = []
            var arr1 = [1,2,3,4,5]
            var arr2 = ['centos','linux','redhat']
            // console.log(arr,arr1,arr2) 
            // length获取数组长度
            // console.log(arr1.length)
            // 遍历数组输出,默认下标从0开始
            for(var i = 0;i < arr1.length;i++){
                console.log(arr1[i]);
            }
            // 没有的元素输出为undefined
            console.log(arr2[3])
            // undefined
            // 把数组长度定义为0即清空数组
            // arr1.length = 0
            // console.log(arr1)
            
        </script>
    

      数组元素的操作

       示例

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>数组的操作方法</title>
    </head>
    <body>
        <script>
            var arr1 = [1,2,3]
            var arr2 = [4,5,6]
            // concat连接两个或者更多数组并返回结果
            console.log(arr1.concat(arr2))
            // [1, 2, 3, 4, 5, 6]
            // join把数组所有元素组成一个字符串,元素通过分隔符进行分割,默认分隔符为,
            console.log(arr1.join())
            // 1,2,3
            // 设置分隔符为:
            console.log(arr1.join(':'))
            // 1:2:3
            // pop删除并返回数组最后一个元素
            console.log(arr1.pop())
            // 3
            // 最后一个元素3删除了数组剩下两个元素
            console.log(arr1)
            // [1,2]
            // push向数组添加一个或者多个元素,返回数组长度
            console.log(arr1.push(3,4))
            // 4
            // 原数组是[1,2]添加了3,4两个元素
            console.log(arr1)
            // [1,2,3,4]
            // reverse颠倒数组元素顺序
            console.log(arr1.reverse())
            // [4,3,2,1]
            console.log(arr1.reverse())
            // 删除数组第一个元素并返回第一个元素
            console.log(arr1.shift())
            // 1
            // 原数组[1,2,3,4]删除了第一个元素变成了[2,3,4]
            console.log(arr1)
            // [2,3,4]
            var arr1 = [1,2,3,4]
            // slice从某给已有的数组返回选定的元素,相当于切片,参数(start,end)不指定参数相当于显示所有元素,不会改变原数组
            console.log(arr1.slice(0,4))
            // [1,2,3,4]
            // sort对数组排序默认按从小到大排序,并改变原数组顺序
            var arr1 = [2,3,1,5,6]
            console.log(arr1.sort())
            // [1,2,3,5,6]
            // 原数组顺序已经按照排序改变
            console.log(arr1)
            // [1,2,3,5,6]
            arr1 = [1,2,3,4]
            // splice删除元素并向数组添加新元素
            // (index,howmany,item1,.....,itemX)
            // index参数:必须 整数,删除元素的下标即从那个位置开始删除
            // howmany参数:必须整数,删除元素的个数
            // item1,.....,itemX:可选,向数组添加新的项目
            // 以下代表从下标1开始删除2个元素即数组变成[3,4] 然后添加两个元素[2,4]最终数组变成[2,4,3,4]
            
            arr1.splice(0,2,2,4)
            console.log(arr1)
            // [2,4,3,4]
            arr1 = [1,2,3,4]
            // toSource返回对象的源代码
            // console.log(arr1.toSource())
            // toString 将数组转换成字符串并返回结果
            console.log(arr1.toString())
            // 1,2,3,4
            // toLocalString 将数组转换成本地数组并返回结果
            console.log(arr1.toLocaleString())
            // 1,2,3,4
            // unshift在数组开始添加元素,返回数组长度
            console.log(arr1.unshift(0))
            // 5
            // 在数组前加一个元素0新数组为[0,1,2,3,4]
            console.log(arr1)
            // [0,1,2,3,4]
        </script>
    </body>
    </html>
    

      函数

      封装一段代码,以方便复用.使代码更加清晰,结构更加明了

      函数的定义

      语法:

    function 函数名() {
      // 函数体
    }
    

      函数表达式:

      语法

    var fn = function () {
      // 函数体
    }
    

      函数的参数

      参数:函数体内部是一个封闭的空间,需要通过参数的方式,把外部值传递给函数体内部。

      语法:

    //带参数的函数声明
    function 函数名(形参1,形参2,形参3...){
      //函数体
    }
    //带参数的函数调用
    

      函数的返回值

      当函数被调用执行完毕之后,并不是所有场景下都需要把结果打印出来。有些业务场景下需要,把函数的执行结果返回,方便进行后续的运算操作。这时,就可以让函数返回,也就是函数的返回值。函数可以通过return关键字语法,返回函数的返回值。

      ①return 之后的代码将不在执行

      ②函数默认返回值为undifined

      语法

    //声明一个带返回值的函数
    function 函数名(形参1, 形参2, 形参3...) {
      //函数体
      return 返回值;
    }
    
    //可以通过变量来接收这个返回值
    var 变量 = 函数名(实参1, 实参2, 实参3...);
    

      示例 不带返回值的函数

    #9_函数.html
        <!DOCTYPE html>
        <html lang="en">
        <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>函数</title>
        </head>
        <body>
            <script>
                // 定义函数sayHello
                function sayHello(person){
                    console.log(person+",早上好")
                }
                // 调用函数才执行
                sayHello("老婆")
                sayHello("老师")
            </script>
        </body>
        </html>
    

      有返回值的函数

      <!DOCTYPE html>
        <html lang="en">
        <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>函数</title>
        </head>
        <body>
            <script>        
                // 定义函数sayHello使用返回值
                function sayHello(person){
                    str = person+",早上好";
                    return str;
                }
                // 调用函数才执行
                console.log(sayHello("老婆"))
                console.log(sayHello("老师"))
            </script>
        </body>
        </html>
    

      对象

      js是基于对象的语言

      对象:由属性和方法组成

      语法

    var person = {
      name: 'linux',
      age: 18,
      sex: true,
      say: function () {
        console.log(this.name);
      }
    };
    

      对象示例

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>对象</title>
    </head>
    <body>
        <script>
            var person = {
            name:'linux',
            age:18,
            sex:true,
            say: function(){
                console.log(this.name);
            }
            }
            
        </script>
      
    </body>
    </html>
    

      对象可以定义key value属性类似于字典,也可以在对象内部定义方法

      显示对象属性可以打印 person.age

      DOM

      学习DOM就可以使用javaScript进行控制页面(样式、元素属性、隐藏显示等)

      什么是DOM

      DOM 是浏览器对象模型,这是由浏览器生成的一个树形结构,使编程语言可以很容易的访问HTML结构。

      在 DOM 中可以通过 document 获取整个页面。

      获取页面元素

      ①getElementById() 根据 id 获取元素

      ②getElementsByTagName()   根据标签名称 获取元素(集合)

      ③querySelector()   使用选择器获取元素,只返回第一个匹配的元素

      ④querySelectorAll()    使用选择器获取元素,返回所有匹配的元素(集合)

    #10_DOM操作.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>DOM</title>
    </head>
    <body>
        <h1 id="myh1">这是一个h1</h1>
        <!-- <h1>这是另外一个h1</h1> -->
        <script>
            // getElementById() 	根据 id 获取元素
            console.log(document.getElementById('myh1'));
            // <h1 id="myh1">这是一个h1</h1>
            // getElementsByTagName()   根据标签名称 获取元素(集合)
            // 获取的是一个集合,需要遍历输出 本例只有一个元素
            myh1s = document.getElementsByTagName('h1')
            for (var index=0;index < myh1s.length;index++){
                console.log(myh1s[index]);
            }
            // <h1 id="myh1">这是一个h1</h1>
            // querySelector()   使用选择器获取元素,只返回第一个匹配的元素
            console.log(document.querySelector('h1'))
            // <h1 id="myh1">这是一个h1</h1>
            // querySelectorAll()    使用选择器获取元素,返回所有匹配的元素(集合) 本例只有一个元素
            myh1s2 = document.querySelectorAll('h1')
            for (var index=0;index < myh1s2.length;index++){
                console.log(myh1s2[index]);
            }
            // <h1 id="myh1">这是一个h1</h1>
        </script>
    </body>
    </html>
    

    querySelector也可以通过ID取搜索 ID前加#
    document.querySelector('#myh1')
    

      设置元素属性  

      获取到元素,可以设置元素对应的属性,改变页面的效果

      - 普通元素的属性

        - HTML 中标签的属性一般对应 DOM 中元素的属性,DOM 中元素的属性,例如:

         title、src、id 等

      - 通过元素的 innerHTML 属性可以设置标签之间的内容

          - 通过 innerHTML 动态生成列表

      示例:修改title内容和h1内容

      默认title标题为Document  下面通过设置元素属性方法修改

     <h1 id="myh1">这是一个h1</h1>
        <script>
            // // getElementById() 	根据 id 获取元素
      
            // title修改
            document.querySelector('title').innerHTML='DOM操作'
           // h1内容修改
            document.querySelector('#myh1').innerHTML='修改h1的内容'
        </script>
    

      页面显示

       - 表单元素的属性

        - value、checked、selected、disabled

        - 遍历文本框给所有文本框赋值

        - 获取下拉框中的选项,设置下拉框中显示的项

        - 禁用按钮

       示例

        <form>
            姓名:<input type='text' name='username' value=""/>
        </form>
        <!-- <h1>这是另外一个h1</h1> -->
    
            // 表单元素的属性
            document.querySelector('input').value='js输入'
        </script>
    

       注册事件

      DOM中的事件机制,可以实现一些常规操作。比如:点击按钮,按下键盘等的响应。

      语法:

    element.onclick = function () {
      alert('hello world');
    };
    

      常用事件:

       示例

    #10_DOM操作
    // 鼠标移动到对应为事件
        document.querySelector('#myh1').onmouseover=function(){
                console.log(new Date().getTime())
            }
            // 按键事件显示时间戳
            document.querySelector('input').onkeydown=function(){
                console.log(new Date().getTime())
            }
    

     

       改变元素样式

      改变行内样式

    element.style.color = 'red';
    

      改变类样式

    element.className = 'active';
    

      示例

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            .redstyle{
                color:red;
            }
        </style>
    </head>
    <body>
        <h1 id="myh1">这是一个h1</h1>
            document.querySelector('#myh1').onclick=function(){
                // console.log(this)
                // 改变行内样式当点击的时候执行
                // this.style.color='red'
                // 按照定义的样式执行,样式名为redstyle
                this.className='redstyle'
            }
        </script>
    </body>
    </html>
    

      页面显示

     

      

      

  • 相关阅读:
    RadioGroup,Radio单选按钮,CheckBox的使用
    使用Intent启动图片裁剪时遇到的问题:Intent#setData()与Intent#setType()赋值问题
    onActivityResult()的用法
    android:图片裁剪
    Sublime Text快捷键
    sublime text3 安装插件
    windows的git服务器搭建
    查询字符串是否已存在
    js 兼容基础
    SOA 一些基本概念
  • 原文地址:https://www.cnblogs.com/minseo/p/14000441.html
Copyright © 2011-2022 走看看