【JavaWeb】day9 JavaScript基础


JavaScript——客户端脚本语言

脚本语言:不需要编译,直接就可以被浏览器解析执行了
运行在客户端浏览器中:每一个浏览器都有JavaScript的解析引擎

作用:
用于增强用户和html页面的交互过程,可以来控制html元素,完成表单的检验,让页面有一些动态的效果,增强用户的体验。

ECMAScript:客户端脚本语言的标准
JavaScript = ECMAScript + JavaScript自己特有的东西(BOM+DOM)


基本语法

引用方式

  1. 内部:定义<script>标签写js代码
  2. 外部:定义<script>标签,提供src属性引入外部的js文件

<script>可以定义在html页面的任何地方,但是定义的位置会影响执行顺序<script>可以定义多个。

数据类型

  1. 基本数据类型:
    1. number:数字。 整数/小数/NaN
    2. string:字符串。 字符串 “abc” “a” ‘abc’
    3. boolean:true和false
    4. null:一个对象为空的占位符
    5. undefined:未定义。如果一个变量没有给初始化值,则会被默认赋值为undefined

  2. 引用数据类型:对象

变量

Java语言是强类型语言,而JavaScript是弱类型语言。

  • 强类型:在开辟变量存储空间时,定义了空间将来存储的数据的数据类型。只能存储固定类型的数据
  • 弱类型:在开辟变量存储空间时,不定义空间将来的存储数据类型,可以存放任意类型的数据。

语法:

var 变量名 = 初始化值;

typeof运算符:获取变量的类型。
* typeof(null) = object
如果不用var也可以,此时定义的是全局变量(不推荐)

运算符

  1. 一元运算符 ++ – +(正号) -(负号)
    在JS中,如果运算数不是运算符所要求的类型,那么js引擎会自动进行类型转换
    * 其他类型转number:
    * string转number:按照字面值转换。如果字面值不是数字,则转为NaN
    * boolean转number:true转为1,false转为0
  2. 算数运算符
    + - * / % …
  3. 赋值运算符
    = += -+…
  4. 比较运算符
    > < >= <= == ===(全等于)
    • 比较方式
      1. 类型相同:直接比较
        • 字符串:按照字典顺序比较。按位逐一比较,直到得出大小为止。
      2. 类型不同:先进行类型转换,再比较
        • ===:全等于。在比较之前,先判断类型,如果类型不一样,则直接返回false
  5. 逻辑运算符
    && || !
  6. 三元运算符
    表达式? 值1:值2;

流程控制语句

  1. if…else…
  2. switch:在JS中,switch语句可以接受任意的原始数据类型
  3. while
  4. do…while
  5. for

基本对象

  1. Function:函数(方法)对象

    1. 创建
      1. var fun = new Function("a", "alert(a);"); 不推荐
      2. function 方法名称(形参){ 方法体 }
      3. var 方法名 = function(形参){ 方法体 }
    2. 调用 :方法名(实参)
    3. 属性:length 代表形参的个数
    4. 特点
      1. 方法定义时,形参的类型不用写,返回值类型也不写。
      2. 方法是一个对象,如果定义名称相同的方法,会覆盖原有方法
      3. 在JS中,方法的调用只与方法的名称有关,和参数列表无关,所以实参和形参的个数不一致也没关系
      4. 在方法声明中有一个隐藏的内置对象arguments数组,用于封装所有的实际参数
  2. Array:数组对象

    1. 创建:
      1. var arr = new Array(1, 2, 3, 4, 5); // list
      2. var arr = new Array(5); // len
      3. var arr = [1, 2, 3, 4, 5]; // list
    2. 方法
      join(分隔符):将数组中的元素按照指定的分隔符拼接为字符串
      push():向数组的末尾添加一个或更多元素,并返回新的长度。
    3. 属性
      length 数组的长度
    4. 特点:
      1. JS中,数组元素的类型是可变的。
      2. JS中,数组的长度是可变的。
  3. Boolean

  4. Date:日期对象

    1. 创建:
      var date = new Date();
    2. 方法:
      toLocaleString()返回当前date对象对应的时间本地字符串格式
      getTime()获取毫秒值。返回当前如期对象描述的时间到1970年1月1日零点的毫秒值差
  5. Math:数学对象

    1. 创建:
      Math对象不用创建,直接使用。 Math.方法名();
    2. 方法:
      random():返回 0 ~ 1 之间的随机数。 含0不含1
      ceil(x):对数进行上舍入。
      floor(x):对数进行下舍入。
      round(x):把数四舍五入为最接近的整数。
    3. 属性:PI
  6. Number

  7. String

  8. RegExp:正则表达式对象

    1. 正则表达式:定义字符串的组成规则。
      1. 单个字符:[ ]
        如:[a] [ab] [a-zA-Z0-9_]
        \d:单个数字字符 [0-9]
        \w:单个单词字符[a-zA-Z0-9_]
      2. 量词符号:
        ?:表示出现0次或1次
        *:表示出现0次或多次
        +:出现1次或多次
        {m,n}:表示出现 m<= 数量 <= n
      3. 开始结束符号
        * ^:开始
        * $:结束
    2. 正则对象:
      1. 创建
        1. var reg = new RegExp("正则表达式");
        2. var reg = /正则表达式/;
      2. 方法
        1. test(字符串):验证指定的字符串是否符合正则定义的规范
  9. Global

    1. 这个Global中封装的方法不需要对象就可以直接调用。 方法名();
    2. 方法:
      URL编码:将中文转码为十六进制位
      encodeURI():url编码
      decodeURI():url解码
      encodeURIComponent():url编码,编码的字符更多
      decodeURIComponent():url解码
      parseInt():将字符串转为数字
      ** isNaN(): **判断一个值是否是NaN
      * NaN六亲不认,连自己都不认。NaN参与的==比较全部为false,因此只有通过 isNaN()才能判断NaN
      ** eval(): ** 将JavaScript字符串转化为JavaScript代码并执行。

BOM

  1. 概念:Browser Object Model 浏览器对象模型,将浏览器的各个组成部分封装成对象。

  2. 组成:

    • Navigator:浏览器对象
    • Window:窗口对象
    • Location:地址栏对象
    • History:历史记录对象
    • Screen:显示器屏幕对象

Window:窗口对象

  1. 创建:
    Window对象不需要创建可以直接使用 window使用: window.方法名(); 且 window可以省略:方法名();

  2. 方法:

    与弹出框有关的方法

    1. alert() 显示带有一段消息和一个确认按钮的警告框。
    2. confirm() 显示带有一段消息以及确认按钮和取消按钮对话框
      • 如果用户点击确定按钮,则方法返回true
      • 如果用户点击取消按钮,则方法返回false
    3. prompt() 显示用于用户输入的对话框,返回值是获取用户输入的值。

    与窗口开关有关的方法
    5. close() 关闭当前打开的浏览器窗口。
    6. open() 打开一个新的浏览器窗口。返回新的窗口对象

    // 关闭指定的窗口
    var newWindow = open(url);
    newWindow.close();
    

    与定时器有关的方式
    7. setTimeout() 在指定的毫秒数后调用函数或计算表达式。var id = setTimeout(fun, 2000)

    • 参数:
      1. js代码或者方法对象
      2. 毫秒值
    • 返回值:唯一标识,用于取消定时器时传参
    1. clearTimeout() 取消由 setTimeout() 方法设置的 timeout。clearTimeout(id)

    2. setInterval() 按照指定的周期(以毫秒计)来调用函数或计算表达式。

    3. clearInterval() 取消由 setInterval() 设置的 timeout。

  3. 属性:
    对所有BOM对象的只读引用
    history
    location
    Navigator
    Screen
    对DOM对象的只读引用
    document

Location:地址栏对象

方法:reload 刷新当前文档
属性:href 用于设置或获取完整的 URL。

History:历史记录对象

方法:

  • back() 加载 history 列表中的前一个 URL。
  • forward() 加载 history 列表中的下一个 URL。
  • go(参数) 加载 history 列表中的某个具体页面。
    • 参数:
      • 正数:前进几个历史记录
      • 负数:后退几个历史记录

属性:

  • length 返回当前窗口历史列表中的 URL 数量。

DOM

Document Object Model 文档对象模型 将标记语言文档的各个组成部分,封装为对象。可以使用这些对象,对标记语言文档进行CRUD的动态操作
DOM树

W3C DOM 标准被分为 3 个不同的部分:

	* 核心 DOM - 针对任何结构化文档的标准模型
		* Document:文档对象
		* Element:元素对象
		* Attribute:属性对象
		* Text:文本对象
		* Comment:注释对象
		* Node:节点对象,其他5个的父对象
	* XML DOM - 针对 XML 文档的标准模型
	* HTML DOM - 针对 HTML 文档的标准模型

核心DOM

Document对象
  1. 创建(获取):在html dom模型中可以使用window对象来获取 (window.)document
  2. 方法:
    1. 获取Element对象:
      1. getElementById(): 根据id属性值获取元素对象。id属性值一般唯一
      2. getElementsByTagName():根据元素名称获取元素对象们。返回值是一个数组
      3. getElementsByClassName():根据Class属性值获取元素对象们。返回值是一个数组
      4. getElementsByName():根据name属性值获取元素对象们。返回值是一个数组
    2. 创建其他DOM对象:
      createAttribute(name)
      createComment()
      createElement()
      createTextNode()
  3. 属性
Element对象
  1. 创建:通过document来获取和创建
  2. 方法:
    1. removeAttribute():删除属性
    2. setAttribute():设置属性
  • 操作Element对象:
  1. 修改属性值:
    1. 明确获取的对象是哪一个?
    2. 查看API文档,找其中有哪些属性可以设置
  2. 修改标签体内容:
    • 属性:innerHTML
    1. 获取元素对象
    2. 使用innerHTML属性修改标签体内容
Node节点对象——其他5个的父对象
  1. 创建:所有dom对象都可以被认为是一个Node节点对象,不用特别创建
  2. 方法: 用于CRUD dom树
    1. appendChild():向节点的子节点列表的结尾添加新的子节点
    2. removeChild() :删除(并返回)当前节点的指定子节点。
    3. replaceChild():用新节点替换一个子节点。
  3. 属性:
    • parentNode 返回节点的父节点。

案例:动态表格的增删
标签a中href属性设置“#”或者“javascript:;”可以拦截跳转

/*
            分析:
                1.添加:
                    1. 给添加按钮绑定单击事件
                    2. 获取文本框的内容
                    3. 创建td,设置td的文本为文本框的内容。
                    4. 创建tr
                    5. 将td添加到tr中
                    6. 获取table,将tr添加到table中
                2.删除:
                    1.确定点击的是哪一个超链接
                        <a href="javascript:void(0);" οnclick="delTr(this);" >删除</a>
                    2.怎么删除?
                        removeChild():通过父节点删除子节点
    
         */

        //1. 通过document的创建DOM对象添加
        /*document.getElementById("btn_add").onclick = function () {
            //2.获取文本框的内容
            var id = document.getElementById("id").value;
            var name = document.getElementById("name").value;
            var gender = document.getElementById("gender").value;

            //3.创建td,赋值td的标签体
            //id 的 td
            var td_id = document.createElement("td");
            var text_id = document.createTextNode(id);
            td_id.appendChild(text_id);
            //name 的 td
            var td_name = document.createElement("td");
            var text_name = document.createTextNode(name);
            td_name.appendChild(text_name);
            //gender 的 td
            var td_gender = document.createElement("td");
            var text_gender = document.createTextNode(gender);
            td_gender.appendChild(text_gender);
            //a标签的td
            var td_a = document.createElement("td");
            var ele_a = document.createElement("a");
            ele_a.setAttribute("href", "javascript:void(0);");
            ele_a.setAttribute("onclick", "delTr(this);");
            var text_a = document.createTextNode("删除");
            ele_a.appendChild(text_a);
            td_a.appendChild(ele_a);

            //4.创建tr
            var tr = document.createElement("tr");
            //5.添加td到tr中
            tr.appendChild(td_id);
            tr.appendChild(td_name);
            tr.appendChild(td_gender);
            tr.appendChild(td_a);
            //6.获取table
            var table = document.getElementsByTagName("table")[0];
            table.appendChild(tr);
        }*/

        //2. 使用元素的innerHTML属性添加
        document.getElementById("btn_add").onclick = function() {
            //2.获取文本框的内容
            var id = document.getElementById("id").value;
            var name = document.getElementById("name").value;
            var gender = document.getElementById("gender").value;

            //获取table
            var table = document.getElementsByTagName("table")[0];

            //追加一行
            table.innerHTML += "<tr>\n" +
                "        <td>"+id+"</td>\n" +
                "        <td>"+name+"</td>\n" +
                "        <td>"+gender+"</td>\n" +
                "        <td><a href=\"javascript:void(0);\" οnclick=\"delTr(this);\" >删除</a></td>\n" +
                "    </tr>";
        }


        //删除方法
        function delTr(obj) {
            var table = obj.parentNode.parentNode.parentNode;
            var tr = obj.parentNode.parentNode;

            table.removeChild(tr);
        }

HTML DOM

  1. 标签体的设置和获取:innerHTML
  2. 使用html元素对象的属性
  3. 控制元素样式
    1. 使用元素的style属性来设置
    div1.style.border = "1px solid red";
    div1.style.width = "200px";
    //font-size--> fontSize
    div1.style.fontSize = "20px";
    
    1. 提前定义好类选择器的样式,再将目标元素的className属性值设置为该类选择器。(推荐)div.className = 类选择器

bootstrap快速入门

待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值