JavaScript_01_基本语法,DOM树的操作,事件介绍

JavaScript_01_基本语法,DOM树的操作,事件介绍

简介

1.JavaScript 是一种客户端脚本语言。运行在客户端浏览器中,每一个浏览器都具备解析 JavaScript 的引擎。

2.脚本语言:不需要编译,就可以被浏览器直接解析执行了。

3.核心功能就是用于网页的交互,让网页变得更加生动,提高用户的体验

4.语言组成

组成部分作用
ECMA Script所有脚本语言规范,构成了JavaScript语法基础
BOMBrowser Object Model 浏览器对象模型,用来操作浏览器中各种对象
DOMDocument Object Model 文档对象模型,用来操作网页中各种元素

5.标签

<script></script>

导入方式:

​ a.内部方式:<script></script>

​ b.外部方式:<script src=js文件路径></script>

两个属性:

​ a. src 导入外部js脚本

​ b. type 指定脚本的类型,可选

基本语法
1.注释

// 单行注释

/*

​ 多行注释

*/

2.变量和常量

JavaScript 属于弱类型的语言,定义变量时不区分具体的数据类型

<!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>
    
</body>
<script>
    //1.定义局部变量
    let name = "张三";
    let age = 23;
    //document.write()在网页输出内容
    document.write(name + "," + age +"<br>");

    //2.定义全局变量
    {
        let l1 = "aa";//定义局部变量
        var l2 = "bb";//定义全局变量
        l3 = "cc";//定义全局变量
    }
    //document.write(l1);会报错Uncaught ReferenceError: l1 is not defined
    document.write(l2 + "<br>");//bb
    document.write(l3 + "<br>");//cc

    //3.定义常量
    const PI = 3.1415926;
    //PI = 3.15;会报错Uncaught TypeError: Assignment to constant variable.
    document.write(PI);
</script>
</html>
3.原始数据类型
关键字说明
number数值型,包括整数和浮点数
boolean布尔类型,true或false
string字符串类型,可以使用单引号,双引号,反引号
object对象类型
undefined未定义的类型
bigint大整数,例如:let num = 10n;

用typeof方法查看数据类型

<script>
    let l1 = true;
    document.write(typeof(l1) + "<br>");    // boolean
    let l2 = null;
    document.write(typeof(l2) + "<br>");    // object  js原始的一个错误
    let l3;
    document.write(typeof(l3) + "<br>");    // undefined
    let l4 = 10;
    document.write(typeof(l4) + "<br>");    // number
    let l5 = "hello";
    document.write(typeof(l5) + "<br>");    // string
    let l6 = 100n;
    document.write(typeof(l6) + "<br>");    // bigint
</script>
4.运算符
  • 算数运算符

    +加,-减,*乘,/除,%取余,++自增,–自减

  • 赋值运算符

    =赋值,+=相加后赋值,-=,*=,/=,%=

  • 比较运算符

    ==判断值是否相等,===判断数据类型和值是否相等,>,>=,<,<=,!=

  • 逻辑运算符

    &&双与,||双或,!取反

  • 三元运算符

    (比较表达式a)?表达式1:表达式2

    a为真取1,a为假取2

5.流程控制和循环语句

if语句,switch语句,for语句,while语句

<script>
    //if语句
    let month = 3;
    if(month >= 3 && month <= 5) {
        document.write("春季");
    }else if(month >= 6 && month <= 8) {
        document.write("夏季");
    }else if(month >= 9 && month <= 11) {
        document.write("秋季");
    }else if(month == 12 || month == 1 || month == 2) {
        document.write("冬季");
    }else {
        document.write("月份有误");
    }
    document.write("<br>");

    //switch语句
    switch(month){
        case 3:
        case 4:
        case 5:
            document.write("春季");
            break;
        case 6:
        case 7:
        case 8:
            document.write("夏季");
            break;
        case 9:
        case 10:
        case 11:
            document.write("秋季");
            break;
        case 12:
        case 1:
        case 2:
            document.write("冬季");
            break;
        default:
            document.write("月份有误");
            break;
    }

    document.write("<br>");

    //for循环
    for(let i = 1; i <= 5; i++) {
        document.write(i + "<br>");
    }

    //while循环
    let n = 6;
    while(n <= 10) {
        document.write(n + "<br>");
        n++;
    }
</script>
6.数组
<script>
    //定义数组
    let arr = [10,20,30];
    //arr[3] = 40;  js中的数组长度可变,增加长度
    //arr.length = 2; //长度变成2
    //遍历数组
    for(let i = 0; i < arr.length; i++) {
        document.write(arr[i] + "<br>");
    }
    document.write("==============<br>");

    //元素类型:因为JS是弱类型,数组中每个元素类型是可以不同的
    let arr1 = ["abc", true, 50, 3.6];
    document.write(arr1 + "<hr/>");
    document.write("==============<br>");
    
    // 数组高级运算符 ...
    //复制数组
    let arr2 = [...arr];
    //遍历数组
    for(let i = 0; i < arr2.length; i++) {
        document.write(arr2[i] + "<br>");
    }
    document.write("==============<br>");

    //合并数组
    let arr3 = [40,50,60];
    let arr4 = [...arr2 , ...arr3];
    //遍历数组
    for(let i = 0; i < arr4.length; i++) {
        document.write(arr4[i] + "<br>");
    }
    document.write("==============<br>");

    //将字符串转成数组
    let arr5 = [..."helloworld"];
    //遍历数组
    for(let i = 0; i < arr5.length; i++) {
        document.write(arr5[i] + "<br>");
    }
</script>
7.函数
<script>
    //无参无返回值的方法
    function println(){
        document.write("hello js" + "<br>");
    }
    //调用方法
    println();

    //有参有返回值的方法
    function getSum(num1,num2){
        return num1 + num2;
    }
    //调用方法
    let result = getSum(10,20);
    document.write(result + "<br>");

    //可变参数  对n个数字进行求和
    function getSum(...params) {
        let sum = 0;
        for(let i = 0; i < params.length; i++) {
            sum += params[i];
        }
        return sum;
    }
    //调用方法
    let sum = getSum(10,20,30);
    document.write(sum + "<br>");

    //匿名函数
    let fun = function(){
        document.write("hello");
    }
    fun();
DOM树操作

Document:文档对象、Element:元素对象、Attribute:属性对象、Text:文本对象

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-csUlpaKf-1592964823038)(C:\Users\de’l’l\AppData\Roaming\Typora\typora-user-images\image-20200623191529752.png)]

1.Element元素对象
获取元素的方法作用
document.getElementById(“id”)通过id得到一个元素
document.getElementsByTagName (“标签名”)通过标签名得到一组元素
document.getElementsByName(“name”)通过name属性得到一组元素
document.getElementsByClassName(“类名”)通过类名得到一组元素
子元素.parentElement属性获取当前元素的父元素
创建元素的方法
document.createElement(“标签名”)创建一个元素
将元素挂到DOM树上的方法
父元素.appendChild(子元素)将元素追加成最后一个子元素
父元素.removeChild(子元素)通过父元素删除子元素(他杀)
replaceChild(新元素, 旧元素)用新元素替换子元素
<body>
    <div id="div1">div1</div>
    <div id="div2">div2</div>
    <div class="cls">div3</div>
    <div class="cls">div4</div>
    <input type="text" name="username"/>
    <hr>
    <select id="s">
        <option>---请选择---</option>
        <option>北京</option>
        <option>上海</option>
        <option>广州</option>
    </select>
</body>
<script>
    //1. getElementById()   根据id属性值获取元素对象
    let div1 = document.getElementById("div1");
    //alert(div1);
    
    //2. getElementsByTagName()   根据元素名称获取元素对象们,返回数组
    let divs = document.getElementsByTagName("div");
    //alert(divs.length);

    //3. getElementsByClassName()  根据class属性值获取元素对象们,返回数组
    let cls = document.getElementsByClassName("cls");
    //alert(cls.length);

    //4. getElementsByName()   根据name属性值获取元素对象们,返回数组
    let username = document.getElementsByName("username");
    //alert(username.length);

    //5. 子元素对象.parentElement属性   获取当前元素的父元素
    let body = div1.parentElement;
    // alert(body);
    
    //6. createElement()   创建新的元素
    let option = document.createElement("option");
    //为option添加文本内容
    option.innerText = "深圳";

    //7. appendChild()     将子元素添加到父元素中
    let select = document.getElementById("s");
    select.appendChild(option);

    //8. removeChild()     通过父元素删除子元素
    //select.removeChild(option);

    //9. replaceChild()    用新元素替换老元素
    let option2 = document.createElement("option");
    option2.innerText = "杭州";
    select.replaceChild(option2,option);
</script>
2.Attribute属性对象
方法作用
setAtrribute(属性名, 属性值)设置属性
getAtrribute(属性名)根据属性名获取属性值
removeAtrribute(属性名)根据属性名移除指定的属性
style属性为元素添加样式
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>属性的操作</title>
    <style>
        .aColor{
            color: blue;
        }
    </style>
</head>
<body>
    <a>点我呀</a>
</body>
<script>
    //1. setAttribute()    添加属性
    let a = document.getElementsByTagName("a")[0];
    a.setAttribute("href","https://www.baidu.com");

    //2. getAttribute()    获取属性
    let value = a.getAttribute("href");
    //alert(value);

    //3. removeAttribute()  删除属性
    //a.removeAttribute("href");

    //4. style属性   添加样式
    //a.style.color = "red";

    //5. className属性   添加指定样式
    a.className = "aColor";

</script>
</html>
3.Text文本对象
属性名 说明
innerText添加文本内容,不解析标签
innerHTML添加文本内容,解析标签
事件

事件指当某些组件执行了某些操作后,会触发某些代码的执行

  • 事件介绍
事件名说明
onload页面完成加载
onsubmit表单提交
onclick单击
ondblclick双击
onblur元素失去焦点
onfocus元素得到焦点
onchage用户改变域的内容
onmouseover鼠标移上
onmouseout鼠标移出
onmouseup鼠标按键松开
onmousedown鼠标按键按下
onkeyup键盘按键松开
onkeydown键盘按键按下
onkeypress键盘按键按下或按住
  • 事件绑定

绑定方式:

1.通过标签中的事件属性进行绑定。

2.通过 DOM 元素属性绑定。document.getElementById(“btn”).onclick = 执行的功能

<!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>
    <button id="bt">点我一下试试</button>
    <button onclick="clickMe()">敢点我吗?</button>
</body>
<script>
    //命名函数
    // 方式一:在button标签中属性定义一个事件,属性值为方法
    function clickMe(){
        alert("我是命名函数方式一!")
    }
    //方式二:得到button元素,通过元素对象绑定属性
    // let bt = document.getElementById("bt");
    // bt.onclick = clickMe;
    // bt.onclick = clickMe();//加上括号会马上执行方法里的内容,导致事件失效

    //匿名函数
    //方式三:
    let nm = function(){
        alert("我是匿名函数方式三")
    }
    let bt = document.getElementById("bt");
    bt.onclick = nm;
    //bt.onclick = nm();//加上括号会马上执行方法里的内容,导致事件失效

    //方式四:
    // document.getElementById("bt").onclick = function(){
    //     alert("我是匿名函数方式四")
    // }
</script>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值