document和js对象

1.Html的Dom树

node.innerHTML//获取节点内部的所有html内容

innerText//获取节点内部的文本信息

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<ul id="fruit" class="cl1">
    <li>苹果</li>
    <li id="blala">香蕉</li>
    <li>蜜瓜</li>
</ul>
<ul id="fruit2" class="cl1">
    <li>guapi</li>
    <li>hei</li>
    <li>hha</li>
</ul>
<p>
    <button onclick="add1()">添加</button>
</p>
<script>
    function add1() {
        //往节点下添加子节点
        var fruit = document.getElementById('fruit');
        // let li1 = document.createElement('li');
        // li1.innerHTML = '<p>葡萄</p>';
        // let li2 = document.createElement('li');
        // li2.innerText = '<p>西瓜</p>';
        // fruit.appendChild(li1);
        // fruit.appendChild(li2);
        // console.log(fruit.innerText);

        //将已有的节点添加到父节点指定位置
        // let elementById = document.getElementById('blala');
        // fruit.appendChild(elementById);

    //    克隆节点
    //     var sun1=document.getElementById('blala');
    //     fruit.appendChild(sun1.cloneNode(true));

    //    设置节点name属性
        fruit.setAttribute('name','food');

    //    设置节点css样式
    //     fruit.style.fontSize='40px ';
    //     fruit.style.color='red';


    }

    window.onload = function () {
        // var fruit = document.getElementById('fruit');
        // let children = fruit.children;
        // for (let i = 0; i < children.length; i++) {
        //     let innerText = children[i].innerText;
        //     console.log(innerText);
        // }
        // for (let childrenKey in children) {
        //     console.log(childrenKey);
        // }

    //document的document.getElementsByTagNameNS('ul')获取标签名
    //     let elementsByTagNameNS = document.getElementsByTagName('ul');
    //     for (let i = 0; i < elementsByTagNameNS.length; i++) {
    //         console.log(elementsByTagNameNS[i].innerText);
    //     }

        //document的获取指定class的标签
        // var nodes=document.getElementsByClassName('cl1');
        // for (const node of nodes) {
        //     console.log(node.innerHTML);
        // }
    }

</script>
</body>
</html>

for in 遍历的是数组或则对象的下标

for of 遍历的是数组或对象的值

1.document属性

getElementsByTagName('p')//获取的是一个数组对象

getElementById()//获取的是一个节点

getElementsByClassName()//获取的也是一个数组对象

//往一个时间里面绑定两个方法

node.addEventListener('click',fun);
node.addEventListener('click',gun);

2.事件处理Event

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>事件</title>
</head>
<body>
<button onclick="fun('321')">点击</button><p id="p1"></p>
<button id="btn1">点击</button>
<!--sdasdsadas-->
<script>
    function fun(e) {
        console.log('这是fun函数');
    }

    function gun(e) {
        console.log('这是gun函数');
    }


    function btn1func(){
        document.getElementsByTagName('p')[0].innerText='123';
    }
    let node = document.getElementById('btn1');
    node.addEventListener('click',fun);
    node.addEventListener('click',gun);

</script>
</body>
</html>

3.事件源 source

4.事件处理函数 handler

规律:当事件发生时,事件本身会被作为第一个参数传递给事件处理函数

5.捕获

​ 外层元素先得到时间,将时间往内部传递

冒泡:从里向外,依次执行,事件处理函数

捕获型时间和冒泡型时间:并非所有的时间都能支持捕捉和冒泡

2.this指针

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>this指针</title>
</head>
<body>
<button onclick="fun(this)">点击1</button>
<script>
    function fun(node) {
        console.log('12');
        console.log(node.innerText);
    }
</script>
</body>
</html>

传递this标签传递当前调用的对象作为参数传递

这里的xxx是全局变量,会被添加到window下的属性中。

也可以使用window.xxx引用。

注意:如果与window默认属性重名的话会覆盖其自身属性。

3.js对象

1.Date()对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Date</title>
</head>
<body>
<p id="p1"></p>
<script>
    function f(){
        document.getElementById('p1').innerText=new Date();
    }

    window.setInterval(f,1000);
</script>
</body>
</html>
  • 三种方式:

new Date();//

Date();//调用函数的感觉

new Date;

  • 获取当前时间

var date=new Date();//获取当前时间

date.getTime();//获取当前时间为毫秒数

//获取时间将从1970/1/1开始到当前时间。

  • Date参数

传递指定时间,获取指定时间的时间戳

var date=new Date('2020,1,1');//获取2020年1月1日的时间

var data1=new Date('1970/1/1 8:0:0');
var data2=new Date('May 9 2021 8:0:0');
var data3=new Date('May 9,2021 8:0:0');
var data4=new Date('May,9,2021 8:0:0');
var data5=new Date('1970-1-1');
var data6=new Date(5);
var data1=new Date('2021,5,9,14,30,50');
//我们的月制从1开始取,人家的从0开始取。所以我们这里会往后一个月。解决可以往前取一个月
//一月 jan 0	二月 Feb 1	十二月	11
  • 获取年月日
var dd=new Date('May 9 2021 08:00:00');
dd.getFullYear();//获取准确地年

dd.getMonth()+1;//获取月份

dd.getDate();//获取日
//9
dd.getDay();//星期几
//0
dd.getHours();//时
//8
dd.getMinutes();//分
//0
dd.getSeconds();//秒
//0

4.js类

  • js基于对象,类不是很明显 js的类就是一个模板
  • 对象可以动态的添加属性

class{

//属性

//行为

}

person1.adress='瑞通开路';
//"瑞通开路"
person1
//{name: "ll", age: 1, sex: "man", adress: "瑞通开路", info: ƒ}
  • js对象有一个原型属性 prototype

对原型添加属性的话,person类会继承原型的对象

所以person可以直接使用原型的属性

注:person类和原型属性重名的话,使用person类属性会优先使用自身属性而不是原型属性。

所以此时修改原型属性值后,person使用改属性并不会使用原型的属性值

  • 使用属性同名时,使用person.proto.属性名使用原型的属性

  • 总结

1.class关键字定义类

class person{        name="";        age=11;        sex='man';        constructor(name,age,sex) {            this.name=name;            this.age=age;            this.sex=sex;        }        work(){            console.log('盘他');        }    }    let person1 = new person('jack',1,'man');    console.log(person1.name);    person1.work();

2.类中的方法不需要function定义

3.构造方法用关键字constructor定义

posted @ 2021-05-11 21:21  时倾1001  阅读(93)  评论(0编辑  收藏  举报