JavaScript ☞ day2

JavaScript基础学习笔记之JavaScript提升
了解时间
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>了解时间</title>
</head>
<body>
    <script type="text/javascript">
        /**
         * 格林尼治时间(GTM):是英国郊区皇家格林尼治天文台的时间,因为地球自转的原因,不同经度上的时间是不相同的,格林尼治天文台是经度为0的地方。世界上发生的重大时间都是以格林尼治时间时间为标准的。
         *
         *
         * 世界协调时间(UTC):世界时间。1970年1月1日0点。
         */
    </script>
</body>
</html>
Date
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Date</title>
</head>
<body>
    <script type="text/javascript">
        //ECMAScript中的Date类型是在早期Java中的java.util.Date类的基础上构建的。为此Date类型使用自UTC1970年1月1日午夜(零时)开始经过的毫秒数保存时间的。该Date类型保存的日期能够精确到1970年1月1日之前和之后的285616年
        

        //创建
        
        //1、直接用Date()函数
        //返回当前时间
        //注意:不论Date()是否带参数,返回的都是当前时间
        var date1 = Date("2016-09-18");
        console.log(typeof date1);//String类型
        console.log(date1);


        //2、构造函数法--不传参数
        //返回当前时间
        var date2 = new Date();
        console.log(typeof date2);//Object类型
        console.log(date2);


        //3、构造函数法--参数是一个表示时间的字符串
        //3.1 格式:month day, year hours:minutes:seconds
        //December 24, 2008 12:04:13
        //注意:如果省略了小时、分钟、秒数,这些会被设置为0
        //3.2 2016-09-18 18:32:32    2016-9-18 18:32:32
        //3.3 2016/09/18 18:32:32
        var date3 = new Date("2016/09/18");
        console.log(date3);


        //4、
        var date4 = new Date("2016-09-08");
        console.log(date4);
        //5、
        var date5 = new Date("2016-9-8");
        console.log(date5);



        //6、构造函数法--参数是(年,月,日,时,分,秒,毫秒)
        //注意:年和月必须写,且月从0开始,日期从1开始
        var date6 = new Date(2016,09,9,10,10,10,1000);
        console.log(date6);


        //7、构造函数法--参数是毫秒数
        //返回中国标准时间
        var date7 = new Date(1000);
        console.log(date7);

    </script>
</body>
</html>
Date对象的方法
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Data对象的方法</title>
</head>
<body>
    <script type="text/javascript">
        var date = new Date();


        //获取年份
        console.log(date.getFullYear());

        //获取月份,注意0表示1月,依次类推
        console.log(date.getMonth());

        //获取日期
        console.log(date.getDate());

        //获取星期
        console.log(date.getDay());

        //获取小时
        console.log(date.getHours());

        //获取分钟
        console.log(date.getMinutes());

        //获取秒数
        console.log(date.getSeconds());

        //获取毫秒数
        console.log(date.getMilliseconds());

        //获取日期对象所表示的日期距离1970-01-01的毫秒数
        console.log(date.getTime());



        //设置年份
        date.setFullYear(2015);

        //设置月份
        //注意:传入的月份大于11,则年份增加
        date.setMonth(8);

        //设置日期
        //注意:如果传入的日期超过了该月应有的天数则会增加月份
        date.setDate(29);

        //注意:星期一般不用设置
        
        //设置小时
        //注意:如果传入的值超过23则增加日期
        date.setHours(13);

        //设置分钟
        //注意:如果传入的值超过了59则增加小时数
        date.setMinutes(56);

        //设置秒数
        //注意:传入的值超过59会增加分钟数
        date.setSeconds(10);

        //设置毫秒数
        //注意:传入的值超过999会增加秒数
        date.setMilliseconds(888);

        //设置距离1970-01-01的毫秒数
        date.setTime(1308484904898);

        console.log(date);


        //转换成字符串
        //包含年月日时分秒
        console.log(date.toLocaleString());
        //包含年月日
        console.log(date.toLocaleDateString());
        //包含时分秒
        console.log(date.toLocaleTimeString());



        //Date.parse(dateString)
        //参数:日期字符串  格式:2016-05-08  2015/05/08 12:00:00
        //返回该日期距离1970年1月1日0点的毫秒数
        console.log(Date.parse("2016-10-10"));




    </script>
</body>
</html>
Date对象间的运算
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Date对象间的运算</title>
</head>
<body>
    <script type="text/javascript">
        var date1 = new Date("2016-10-10 10:10:10");
        var date2 = new Date("2016-10-10 10:10:12");

        //两个日期对象之间相差的毫秒数
        console.log(date2 - date1);

        //返回两个日期字符串拼接后的字符串
        console.log(date2 + date1);
        console.log(typeof (date2 + date1));

    </script>
</body>
</html>
BOM简介
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>BOM简介</title>
</head>
<body style="background-color: red">
    <input type="text" name="abc">
    <button onclick="func()">跳转到绿页面</button>
    <button onclick="refresh()">刷新红页面</button>
    <button onclick="ass()">加载绿页面</button>

    <button onclick="backPage()">上一页</button>
    <button onclick="forwardPage()">下一页</button>

    <button onclick="goPage()">go到黄界面</button>


    <script type="text/javascript">
        //BOM:浏览器对象模型(Browser Object Model),是一个用于访问浏览器和计算机屏幕的对象集合。我们可以通过全局对象window来访问这些对象。
        

        console.log(window.document);
        console.log(window.frames);
        console.log(window.navigator);
        console.log(window.screen);
        console.log(window.location);
        console.log(window.history);
        
        
        


        //window.document
        //是一个BOM对象,表示的是当前所载入的文档(即页面),但它的方法和属性同时也属于DOM对象所涵盖的范围。
        


        //window.frames
        //是当前页面中所有框架的集合



        //window.navigator
        //用于反应浏览器及其功能信息的对象



        //window.screen
        //提供浏览器以外的环境信息



        //window.location
        //href属性        控制浏览器地址栏的内容
        //reload()       刷新页面 
        //reload(true)   刷新页面,不带缓存
        //assign()       加载新的页面
        //replace()      加载新的页面(注意:不会再浏览器的历史记录表中留下记录)
        function func() {
            //alert("点我干啥?");
            window.location.href = "greenWindow.html";
        }
        function refresh() {
            window.location.reload();
        }
        function ass() {
            window.location.assign("greenWindow.html");
            //window.location.replase("greenWindow.html");
        }





        //window.history
        //window.history.length获取历史记录的长度
        //back()     上一页
        //forward()  下一页
        //go(num)    //num<0时,跳转到自己后方的第num个记录。num>0时,跳转自己前方的第num个记录

        console.log("window.history.length = " + window.history.length);
        //上一页
        function backPage() {
            window.history.back();
        }

        //下一页
        function forwardPage() {
            window.history.forward();
        }
        //
        function goPage() {
            window.history.go(2);
        }


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

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>BOM简介</title>
</head>
<body style="background-color: green">
    <button onclick="func()">跳转到黄页面</button>

    <button onclick="backPage()">上一页</button>
    <button onclick="forwardPage()">下一页</button>

    <script type="text/javascript">
        function func() {
            window.location.href = "yellowWindow.html";
        }

        function backPage() {
            window.history.back();
        }

        function forwardPage() {
            window.history.forward();
        }
    </script>

</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>BOM简介</title>
</head>
<body style="background-color: yellow">
    <button onclick="func()">回到红页面</button>
    <script type="text/javascript">
        function func() {
            window.history.go(-2);
        }
    </script>
</body>
</html>
window中常用的方法
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>window中常用的方法</title>
</head>
<body>
    <button onclick="openNewWindow()">打开新窗口</button>
    <button onclick="closeWindow()">关闭窗口</button>

    <script type="text/javascript">

        function openNewWindow() {
            //open(url,target,"特性的字符串")
            window.open("yellowWindow.html", "blank", "width=200px, height=400px, top=0px, left=0px");
        }

        function closeWindow() {
            window.close();

            //火狐
            //about:config
            //我会保证小心
            //allow_src
            //true
        }
    </script>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>BOM简介</title>
</head>
<body style="background-color: yellow">
</body>
</html>
window常用方法open特性
window中常用的事件-onload加载事件和onunload卸载事件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>window中常用的事件-onload加载事件和onunload卸载事件</title>
</head>
<body>
    <button onclick="func()">跳转</button>
    <script type="text/javascript">

        //onunload事件
        //当页面完全卸载再触发,只有IE支持
        window.onunload = function() {
            alert("确定关闭");
        };
        function func() {
            window.location.href = "red.html";
        }



        //load事件
        //当页面加载完成的时候会触发该事件  
        window.onload = function() {
            alert("我在界面加载完后才显示");
        };

        alert("页面加载中");



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

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>red</title>
</head>
<body style="background-color: red">
    
</body>
</html>
window中常用的事件-onscroll滚动事件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>window中常用的事件-onscroll滚动事件</title>
</head>
<body style="height:3000px">
    <h1>我是顶部</h1>
    <button onclick="goOn()" style="position: fixed;right: 50px;bottom: 50px">返回顶部</button>

    
    <script type="text/javascript">
        //当窗口发生滚动会触发该事件
        window.onscroll = function() {
            console.log("滚动");

            //打印滚动高度
            var scrollTop = document.documentElement.scrollTop||document.body.scrollTop;
            console.log(scrollTop);
        };

        //返回顶部
        function goOn() {
            document.documentElement.scrollTop = 0;
            document.body.scrollTop = 0;
        }
    </script>
</body>
</html>
window中常用的事件-onresize窗口变化事件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>window中常用的事件-onresize窗口变化事件</title>
</head>
<body>
    <script type="text/javascript">
        //当浏览器发生缩放的时候就会反复触发resize事件     
        window.onresize = function() {
            var w = document.documentElement.clientWidth || document.body.clientWidth || window.innerWidth;

            var h = document.documentElement.clientHeight || document.body.clientHeight || window.innerHeight;

            console.log(document.documentElement.clientWidth, document.body.clientWidth, window.innerWidth, w);

            console.log(document.documentElement.clientHeight, document.body.clientHeight, window.innerHeight, h);
        };
    </script>
</body>
</html>
定时器-间歇性定时器
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>定时器-间歇性定时器</title>
</head>
<body>
    <button onclick="closeIntervar()">关闭定时器</button>
    <script type="text/javascript">
        //setInterval(函数名,时间)
        // 功能:创建一个间歇性定时器,每间隔参数二时间执行一次参数一函数
        // 返回值:定时器的id,可以通过该id关闭定时器
        
        var timer = window.setInterval(func, 2000);

        function func() {
            console.log("sunck is a good man");
        }

        function closeIntervar() {
            //停止定时器
            ////注:js中没有恢复定时器一说,当你停止定时器之后,定时器就会被删掉,想要继续的话,直接新建一个定时器。

            window.clearInterval(timer);
        }


    </script>
</body>
</html>
定时器-延时定时器
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>定时器-延时定时器</title>
</head>
<body>
    <button onclick="closeTimer()">关闭定时器</button>
    <script type="text/javascript">
        //setTimeout(函数名,时间)
        //功能:参数2时间以后再执行参数1函数
        //返回值:定时器的id
        

        alert("创建定时器,5秒后执行名为func的函数");
        var timer = window.setTimeout(func, 5000);

        function func() {
            console.log("sunck is a good man");
        }

        //关闭定时器
        function closeTimer() {
            window.clearTimeout(timer);
        }
        
    </script>
</body>
</html>
认识DOM
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>认识DOM</title>
</head>
<body>
    <script type="text/javascript">

        /**了解DOM
         * DOM:文档对象模型(Document Object Model)
         * DOM是访问HTML和操作HTML的标准。
         *
         * Core DOM – 核心DOM 针对任何结构化文档的标准模型
         * XML DOM  - 针对 XML 文档的标准模型
         * HTML DOM - 针对 HTML 文档的标准模型
         */
        

        /**DOM节点的分类
         * 1、文档节点
         * 2、标签(元素)节点
         * 3、属性节点
         * 4、文本节点
         * 5、注释节点
         */
        

        /**DOM节点层级关系(DOM树)
         * 1、父节点(parent node):父节点拥有任意数量的子节点
         * 2、子节点(child node):子节点只能拥有一个父节点
         * 3、兄弟节点(sibling node):拥有相同父节点的同级节点
         * 4、根节点(root node):一个HTML文档一般只有一个根节点,根节点没有父亲节点,是最上层的节点。
         *
         *
         *
         * 祖先节点:包含子节点的节点都可以叫做祖先节点,其中包括了父节点。
         * 后代节点:一个节点内包含的所有节点,叫做后代节点,其中包括了子节点。
         */
        


        /**JS跟页面中这些标签进行交互
         * 1、获取标签(元素)节点
         *      修改标签CSS样式
         *      修改标签属性
         * 2、创建标签
         * 3、删除标签
         * 4、复制标签
         */
        

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

DOM节点分类

DOM节点关系
获取标签(元素)节点
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>获取标签(元素)节点</title>
</head>
<body>
    <div id="idDiv"></div>

    <div class="classDiv"></div>
    <div class="classDiv"></div>
    <div class="classDiv"></div>
    <div class="classDiv"></div>

    <input type="text" name="inputText">
    <input type="text" name="inputText">
    <input type="text" name="inputText">

    <script type="text/javascript">

        console.log("**getElementById**");
        //1、getElementById(str)
        //根据元素id获取元素节点
        var jsDiv = document.getElementById("idDiv");
        console.log(jsDiv);
        console.log(typeof jsDiv);
        alert(jsDiv);




        console.log("**getElementsByClassName**");
        //2、getElementsByClassName()
        //获取相同class属性的元素节点列表
        //注意:此方法不支持IE8以下
        var jsDivsClass = document.getElementsByClassName("classDiv");
        for (var i = 0; i < jsDivsClass.length; i++) {
            console.log(jsDivsClass[i]);
        }
        



        console.log("**getElementsByTagName**");
        //3、getElementsByTagName()
        //根据标签名来获取元素节点的集合
        var jsDivsTagName = document.getElementsByTagName("div");
        for (var i = 0; i < jsDivsTagName.length; i++) {
            console.log(jsDivsTagName[i]);
        }




        console.log("**getElementsByName**");
        //4、getElementsByName()
        //根据name属性值来获取元素节点的集合
        var jsDivsName = document.getElementsByName("inputText");
        for (var i = 0; i < jsDivsName.length; i++) {
            console.log(jsDivsName[i]);
        }

    </script>
</body>
</html>
获取属性节点
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>获取属性节点</title>
</head>
<body>
    <input type="text"  id="in" placeholder="请留下你的大名!" my="我的">

    <script type="text/javascript">
        var jsInput = document.getElementById("in");
        console.log(jsInput);



        //方法一:  
        //获取官方定义的属性直接使用 元素节点.属性名        
        //得到元素对应属性的属性值
        var typeNode = jsInput.type;
        console.log(typeNode);
        var placeholderNode = jsInput.placeholder;
        console.log(placeholderNode);


        //alert("注意!我要变身了");
        //修改元素对应属性的属性值
        //元素节点.属性名 = 新的属性值
        jsInput.placeholder = "傻不傻";


        //方法二:
        //元素节点.getAttribute("属性名")
        //得到元素对应属性的属性值
        //注意:该方法还可以获取自定义属性
        var idNode = jsInput.getAttribute("my");
        console.log(idNode);

        //修改元素对应属性的属性值
        //元素节点.setAttribute("属性名", "新的属性值");
        jsInput.setAttribute("my", "sunck");
        console.log(jsInput);


        //移除元素节点中的某个属性节点,某些低版本浏览器不支持
        //元素节点.removeAttribute("属性名");
        jsInput.removeAttribute("my");
        console.log(jsInput);
        
    </script>
</body>
</html>

####### 获取属性节点

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>获取属性节点</title>
    </head>
    <body>
        <input type="text"  id="in" placeholder="请留下你的大名!" my="我的">

        <script type="text/javascript">
            var jsInput = document.getElementById("in");
            console.log(jsInput);



            //方法一:  
            //获取官方定义的属性直接使用 元素节点.属性名        
            //得到元素对应属性的属性值
            var typeNode = jsInput.type;
            console.log(typeNode);
            var placeholderNode = jsInput.placeholder;
            console.log(placeholderNode);


            //alert("注意!我要变身了");
            //修改元素对应属性的属性值
            //元素节点.属性名 = 新的属性值
            jsInput.placeholder = "傻不傻";


            //方法二:
            //元素节点.getAttribute("属性名")
            //得到元素对应属性的属性值
            //注意:该方法还可以获取自定义属性
            var idNode = jsInput.getAttribute("my");
            console.log(idNode);

            //修改元素对应属性的属性值
            //元素节点.setAttribute("属性名", "新的属性值");
            jsInput.setAttribute("my", "sunck");
            console.log(jsInput);


            //移除元素节点中的某个属性节点,某些低版本浏览器不支持
            //元素节点.removeAttribute("属性名");
            jsInput.removeAttribute("my");
            console.log(jsInput);
            
        </script>
    </body>
    </html>
获取文本节点
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>获取文本节点</title>
</head>
<body>
    <div id="box">
        我是个盒子
    </div>
    <script type="text/javascript">
        var jsDiv = document.getElementById("box");

        //1、元素节点.innerHTML
        //从对象的开始标签到结束标签的全部内容,不包括本身Html标签
        var inner = jsDiv.innerHTML;
        console.log(inner);
        console.log(typeof inner);

        //2、元素节点.outerHTML
        //除了包含innerHTML的全部内容外, 还包含对象标签本身
        var outer = jsDiv.outerHTML;
        console.log(outer);
        console.log(typeof outer);
        
        //3、元素节点.innerText
        //从对象的开始标签到结束标签的全部的文本内容
        var text = jsDiv.innerText;
        console.log(text);
        console.log(typeof text);



        //修改
        jsDiv.innerHTML = "<p>我才是</p>";
        console.log(jsDiv);
    </script>
</body>
</html>
行间样式表的读写
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>行间样式表的读写</title>
</head>
<body>
    <div id="box" style="width:100px;height:200px;background-color:red"></div>
    <button onclick="changeColor()">换颜色</button>

    <script type="text/javascript">
        //获取元素节点
        var jsDiv = document.getElementById("box");

        //获取style属性节点
        var jsDivStyle = jsDiv.style;
        //console.log(jsDivStyle);
        

        //获取样式表中样式属性的属性值  
        //style属性节点.样式属性名  
        //元素节点.style.样式属性名   
        //元素节点.style["样式属性名"]
        var w = jsDivStyle.width;
        console.log(w);

        var h = jsDiv.style.height;
        //也可用如下写法
        //var h = jsDiv.style["height"];
        console.log(h);


        //设置样式表中的样式属性的属性值
        //元素节点.style.样式属性名 = 样式属性值
        //background-color --- backgroundColor
        //HTML中的-号去掉,-号后面的单词首字母大写
        jsDiv.style.backgroundColor = "green";

        function changeColor() {
            var r = parseInt(Math.random() * 256);
            var g = parseInt(Math.random() * 256);
            var b = parseInt(Math.random() * 256);

            var colorStr = "rgb(" + r + ", " + g + ", " + b + ")";
            jsDiv.style.backgroundColor = colorStr;
        }

    </script>
</body>
</html>
内部样式表与外部样式表的读写
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>内部样式表与外部样式表的读写</title>
    <link rel="stylesheet" type="text/css" href="sunck.css">
    <style type="text/css">
        #box1{
            width:100px;height: 200px;background-color: red;
        }
    </style>
</head>
<body>
    <div id="box1"></div>
    <div id="box2"></div>

    <script type="text/javascript">
        /**获取
         *
         * IE中:元素节点.currentStyle.样式属性名
         *      元素节点.currentStyle["样式属性名"]
         * 其他:window.getComputedStyle(元素节点, 伪类).样式属性名
         *      window.getComputedStyle(元素节点, 伪类)["样式属性名"]
         * 
         * 伪类一般写null即可
         * 
         */
        
        //获取元素节点
        var jsDiv1 = document.getElementById("box1");
        var jsDiv2 = document.getElementById("box2");


        var w1 = 0;
        //判断是否是IE浏览器
        if (jsDiv1.currentStyle) {
            //IE浏览器获取样式属性值的方式
            w1 = jsDiv1.currentStyle.width;
        } else {
            //其他浏览器获取样式属性值的方式
            w1 = window.getComputedStyle(jsDiv1, null).width;
        }
        console.log(w1);

        var w2 = 0;
        if (jsDiv2.currentStyle) {
            w2 = jsDiv2.currentStyle.width;
        } else {
            w2 = window.getComputedStyle(jsDiv2, null)["width"];
        }
        console.log(w2);



        //设置样式中的属性的值
        //元素节点.style.样式属性名 = 样式属性值
        jsDiv1.style.backgroundColor = "black";
        jsDiv2.style.backgroundColor = "blue";

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



sunck.css文件内容
#box2{
    width: 200px;height: 100px;background-color: green;
}
getComputedStyle与style的区别
自由飞翔的div
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>自由飞翔的div</title>
    <style type="text/css">
        #box{
            width: 100px;height: 100px;background-color: red;position: absolute;left: 0px;top: 0px;
        }
    </style>
</head>
<body>
    <div id="box"></div>
    <button onclick="fly()" style="position: absolute;left: 150px;top: 150px">飞翔吧</button>

    <script type="text/javascript">
        function fly() {
            var jsDiv = document.getElementById("box");

            var timer = window.setInterval(move, 100);

            
            function move() {
                var currentLeft = parseInt(window.getComputedStyle(jsDiv, null).left);
                jsDiv.style.left = (currentLeft + 5) + "px";

                var currentTop = parseInt(window.getComputedStyle(jsDiv, null).top);
                jsDiv.style.top = (currentTop + 5) + "px";
            }
        }
    </script>
</body>
</html>
节点常用属性
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>节点常用属性</title>
    <style type="text/css"> 
        #box1{
            width: 200px;height: 200px;background-color: red;
        }
        #box2{
            width: 200px;height: 200px;background-color: green;
        }
        #box3{
            width: 200px;height: 200px;background-color: yellow;
        }
    </style>
</head>
<body>
    <div id="box1">
        <p>我是第一个P</p>
        <p>我是第二个P</p>
        <p>我是第三个P</p>
        <p>我是第四个P</p>
    </div>
    <div id="box2"></div>
    <div id="box3"></div>
    <input id="put" type="text" name="in" placeholder="sunck is a good man">

    <script type="text/javascript">
        //节点共有的属性:nodeName、nodeType、nodeValue
        var jsDiv1 = document.getElementById("box1");
        console.log(jsDiv1);
        console.log(jsDiv1.nodeName);
        console.log(jsDiv1.nodeType);
        console.log(jsDiv1.nodeValue);




        //节点层次关系属性
        


        //1、获取当前元素节点的所有的子节点
        var childNodesArray = jsDiv1.childNodes;
        console.log(childNodesArray);
        
        //2、获取当前元素节点的第一个子节点
        var firstChildNode = jsDiv1.firstChild;
        console.log(firstChildNode);
        
        //3、获取当前节点的最后一个子节点
        var lastChildNode = jsDiv1.lastChild;
        console.log(lastChildNode);

        //4、获取该节点的文档的根节点,相当于document
        var rootNode = jsDiv1.ownerDocument;
        console.log(rootNode);

        //5、获取当前节点的父节点
        var parentNode = jsDiv1.parentNode;
        console.log(parentNode);


        var jsDiv2 = document.getElementById("box2");
        //6、获取当前节点的前一个同级节点
        var previousNode = jsDiv2.previousSibling;
        console.log(previousNode);

        //7、获取当前节点的后一个同级节点
        var nextNode = jsDiv2.nextSibling;
        console.log(nextNode);


        //8、获取当前节点的所有的属性节点
        var jsInput = document.getElementById("put");
        var allAttributesArray = jsInput.attributes;
        console.log(allAttributesArray);



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

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>节点常用属性</title>
    <style type="text/css"> 
        #box1{
            width: 200px;height: 200px;background-color: red;
        }
        #box2{
            width: 200px;height: 200px;background-color: green;
        }
        #box3{
            width: 200px;height: 200px;background-color: yellow;
        }
    </style>
</head>
<body>
    <div id="box1">
        <p>我是第一个P</p>
        <p>我是第二个P</p>
        <p>我是第三个P</p>
        <p>我是第四个P</p>
    </div>
    <div id="box2"></div>
    <div id="box3"></div>
    <input id="put" type="text" name="in" placeholder="sunck is a good man">

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

        
    </script>
</body>
</html>
节点属性nodeName、nodeType、nodeValue
DOM节点动态操作
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>DOM节点动态操作</title>
    <style type="text/css">
        #box{
            width: 300px;height: 300px;background-color: yellow
        }
        #box1{
            width: 100px;height: 100px;background-color: red
        }
        #box2{
            width: 50px;height: 50px;background-color: blue
        }
    </style>

</head>
<body>
    <div id="box">
        <p>1</p>
        <p>2</p>
    </div>
    
    <script type="text/javascript">
        //创建元素节点
        var jsDiv1 = document.createElement("div");
        jsDiv1.id = "box1";
        console.log(jsDiv1);


        //父节点.appendChild(子节点);
        //方法将一个新节点添加到某个节点的子节点列表的末尾上
        document.body.appendChild(jsDiv1);


        //父节点.insertBefore(新节点, 子节点)
        //将新节点添加到父节点的某个子节点的前面
        var jsP = document.createElement("p");
        jsP.innerHTML = "关注我";

        var jsD = document.getElementById("box");
        jsD.insertBefore(jsP, jsD.childNodes[3]);
        console.log(jsD);


        //创建文本节点
        var jsStr = document.createTextNode("什么");

        //添加文本节点
        var js2P = jsD.childNodes[1];
        js2P.appendChild(jsStr); 
        


        //替换节点
        //父节点.replaceChild(新节点, 子节点)
        //将父节点中的某个子节点替换成新节点
        var jsDiv2 = document.createElement("div");
        jsDiv2.id = "box2";
        jsDiv1.parentNode.replaceChild(jsDiv2, jsDiv1);
        
        

        //复制节点
        var jsD1 = jsD.cloneNode();//只复制本身
        console.log(jsD1);
        var jsD2 = jsD.cloneNode(true);//复制本身和子节点
        console.log(jsD2);



        alert("删除节点");
        //删除节点
        //父节点.removeChild(子节点)
        //删除父节点下的对应子节点
        jsDiv2.parentNode.removeChild(jsDiv2);



        //offsetParent(参照物父元素)
        var temp = jsD.childNodes[1].offsetParent;
        console.log(temp);
        //当某个元素的父元素或以上元素都未进行CSS定位时,则返回body元素,也就是说元素的偏移量(offsetTop、offsetLeft)等属性是以body为参照物的
        //当某个元素的父元素进行了CSS定位时(absolute或者relative),则返回父元素,也就是说元素的偏移量是以父元素为参照物的
        //当某个元素及其父元素都进行CSS定位时,则返回距离最近的使用了CSS定位的元素


    </script>
</body>
</html>
事件处理程序
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>事件处理程序</title>
</head>
<body>
    <!-- 事件:就是用户或者是浏览器执行的某种动作
         事件处理程序:就是响应事件的函数,事件处理程序的名字是以“on”开头的
     -->



    <!-- 1、直接在html标签中给与事件处理程序同名的属性赋值js代码 -->
    <button id="btn1" onclick="console.log('事件处理1')">按键1</button>



    <!-- 2、给与事件处理程序同名的属性赋值一个函数调用语句 -->
    <!-- 使HTML代码与JS代码稍微有点儿分离,不至于第一种那么紧密耦合 -->
    <!-- this代表的是button标签本身 -->
    <button id="btn2" onclick="func2(this)">按键2</button>



    <!-- 3、DOM0级事件处理程序 -->
    <!-- 这种方式也是早期的写法,但好处是可以将JS与HTML完全分离,前提是需要给HTML元素提供一个额外的id属性(或其它能获取该元素对象的方式) -->
    <button id="btn3">按键3</button>




    <!-- 4、DOM2级事件处理程序 -->
    <button id="btn4">按键4</button>



    <script type="text/javascript">

        //2
        function func2(obj) {
            console.log("事件处理2");
            //obj接收的this的值,表示的是调用该函数的标签节点
            console.log(obj);

            console.log(this);//this---window
        }



        //3
        //找到id为btn3的按键
        var jsBtn3 = document.getElementById("btn3");
        //在这里添加事件处理程序
        jsBtn3.onclick = func3;
        function func3() {
            console.log("事件处理3");
            console.log(this);//this---元素节点
        }
        //移除事件处理程序
        //jsBtn3.onclick = null;
        



        //4、是目前最流行的事件处理程序,各大主流浏览器全部支持
        var jsBtn4 = document.getElementById("btn4");
        //添加事件监听器
        //元素节点.addEventListener("事件名",响应事件的函数,布尔值)
        // 事件名 click mouseover mouseout
        // 函数名或者匿名函数
        // 事件流 false 
        jsBtn4.addEventListener("click", func4, false);
        function func4() {
            console.log("事件处理4");
            console.log(this);//this---元素节点
        }
        //注意:可以绑定多个事件,相互之间不影响
        jsBtn4.addEventListener("click", func5, false);
        function func5() {
            console.log("事件处理5");
        }

        //移除事件
        //注意:
        //1、参数与添加事件时相同
        //2、添加事件时第二个参数不能是匿名函数
        //jsBtn4.removeEventListener("click", func4, false);



        /**能否使用this,this代表的谁??
         * 1、在标签中使用,代表的是标签本身
         *
         * 2、在函数体中直接使用,代表的是window
         *    在标签中将this作为实参传递到函数中,在函数体中使用形参代表标签本身
         *
         * 3、在事件函数中使用,代表标签本身
         *
         * 4、在事件函数中使用,代表标签本身
         */
        

        /**移除事件
         * 1、无法移除
         *
         * 2、无法移除
         *
         * 3、元素节点.onclick = null;
         *
         * 4、元素节点.removeEventLinstener("事件名", 响应函数, false);
         */

    </script>
</body>
</html>
事件类型
飞翔的你
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        
        <style type="text/css">
            #box{
                width: 100px;
                height: 100px;
                background-color: red;
                position: absolute;
                left: 0;
                top: 0;
            }
        </style>
        
    </head>
    <body style="height: 1000px;position: relative;">
        
        <div id="box">
            
        </div>
        
        <button onclick="fly()" style="position: absolute; left:200px;top: 200px;">走你</button>
        
        <script type="text/javascript">
            var div = document.getElementById("box")
            
            function fly(){
                
                setInterval(function(){
                    var a = parseInt(window.getComputedStyle(div, null).left)
                    div.style.left = a + 10 + "px"
                    var b = parseInt(window.getComputedStyle(div, null).top)
                    div.style.top = b + 10 + "px"
                }, 100)
            }
            
        </script>
        
    </body>
</html>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        
        <style type="text/css">
            #box{
                width: 600px;
                height: 400px;
                border: solid 1px red;
                position: relative;
            }
            #ball{
                width: 50px;
                height: 50px;
                border-radius: 25px;
                background-color: yellow;
                position: absolute;
                left: 0;
                top: 0;
            }
        </style>
    </head>
    <body>
        
        <div id="box">
            <div id="ball">
                
            </div>
        </div>
        
        
        <script type="text/javascript">
            var ball = document.getElementById("ball")
            
            var speedx = 2
            var speedy = 2
            
            setInterval(function(){
                ball.style.left = ball.offsetLeft + speedx + "px"
                ball.style.top = ball.offsetTop + speedy + "px"
                
                if (ball.offsetTop >= 400 - 50 || ball.offsetTop <= 0){
                    speedy *= -1
                }
                if (ball.offsetLeft >= 600 - 50 || ball.offsetLeft <= 0) {
                    speedx *= -1
                }
                
            }, 10)
            
        </script>
        
    </body>
</html>
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,366评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,521评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,689评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,925评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,942评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,727评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,447评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,349评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,820评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,990评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,127评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,812评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,471评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,017评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,142评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,388评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,066评论 2 355

推荐阅读更多精彩内容