DAY7 JS应用

 

 

 

 

 

 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <header>
        <h1 id="myTitle">San 框架</h1>
        <img src="https://baidu.github.io/san/img/logo-colorful.svg" alt="san logo">
        <h3>111</h3>
        <p class="detail">San: 一个快速、轻量、灵活的JS框架</p>
    </header>
    <main>
        <ul class="detail">
            <li data-index="1">数据驱动</li>
            <li data-index="2">HTML模板</li>
            <li>组件化</li>
            <li id="detail-performance">高性能视图</li>
            <li>组件反解</li>
        </ul>
        <p>
            教程是入门的捷径,请从 <a id="clickLink" href="https://baidu.github.io/san/">这里</a>开始了解san
        </p>
    </main>
    <script>
        //一、DOM基础操作
        let domResult;
        // 查
        // 1.通过执行document上成员函数获取DOM节点
        // 1)通过id查找
        // 如果页面id存在重名的情况,只会返回第一个节点的DOM对象
        // domResult=document.getElementById("myTitle");
        //2)通过标签名查找,返回的是NodeList
        //NodeList通常是一个实时集合,文档节点发生变化随之变化
        // NodeList不是一个数组,是一个类似数组的对象
        // domResult=document.getElementsByTagName("li");
        // 3)通过class属性查找,返回的是NodeList
        // domResult=document.getElementsByClassName("detail");

        // 2.根据传入的CSS选择器,查找匹配的DOM节点
        // 1) querySetector 只返回第一个匹配到的DOM节点
        // 2) querySetectorAll 返回所有DOM节点
        // 查找第一个 标签名为 p 的节点
        // domResult=document.querySelector('p');
        // 查找所有 标签名为 p 的节点
        // domResult=document.querySelectorAll('p');
        // 查找所有class 属性的值为detail的元素
        // domResult=document.querySelectorAll('detail');
        //匹配直接嵌套在<ul>元素内所有的<li>元素
        // domResult=document.querySelectorAll("ul > li")
        // 匹配main中的xxx
        // domResult=document.querySelectorAll("main > *");
        // 匹配main中所有子孙元素
        // domResult=document.querySelectorAll("main *");
        //匹配main中的的a元素
        // domResult=document.querySelectorAll("main a");
        //匹配img后面的h3元素
        // domResult=document.querySelectorAll("img + h3");
        // domResult=document.querySelectorAll("[data-index]");
        // domResult=document.querySelectorAll('[data-index="1"]');
        // console.log(domResult)

        //3.根据当前已经获取的节点,获取与该DOM节点相关的父、子、兄弟节点
        // 1)根据获取到的节点,直接获取该节点的子节点
        let ulDomResult =document.getElementsByTagName("ul")[0];
        // console.log(ulDomResult.children);
        // 2) 当前节点父元素节点
        // console.log(ulDomResult.parentNode);
        // 紧跟在后面的兄弟节点,如果已经是最后一个返回null
        // console.log(ulDomResult.nextElementSibling);

        let titleDom =document.getElementById("detail-performance");
        // 1.修改innerHTML,内容中的标签将会被识别为HTML格式
        // titleDom.innerHTML="<strong>渲染速度很快</strong>";
        // 2.修改textContent,新的内容完整呈现在页面上,不会有css
        // titleDom.textContent="<strong>渲染速度很快</strong>"
        // 3.修改style属性值
        // titleDom.style="color:blue";
        //4.修改指定属性值,注意属性名中,所有大写字母都会被转为小写
        titleDom.setAttribute("some-attribute","666");
        // console.log(titleDom.getAttribute("some-attribute"));

        //增
        function  getCurrentTimeStr(){
            const date =new Date();
            const hour =date.getHours();
            const minutes=date.getMinutes();
            const second=date.getSeconds();
            return [hour,minutes,second].join(":");
        }
        let newDom=document.createElement("p");
        newDom.textContent ="页面加载时间为"+getCurrentTimeStr();
        document.body.appendChild(newDom);

        //删除
        //remove函数
        // let liToRemove =document.getElementsByTagName("li")[0];
        // console.log(liToRemove);
        // liToRemove.remove();
        //
        // //二、DOM事件
        // //1. 通过给DOM对象的onclick成员赋值为函数,来监听DOM事件
        // let liDom=document.getElementById("detail-performance");
        // liDom.onclick=function (event){
        //     alert("li 响应事件");
        //     console.log("li响应click事件");
        // }
        //
        // // 结合上个小例子,尝试事件的冒泡
        // let ul = document.getElementsByTagName("ul")[0];
        // ul.onclick=function (event){
        //     console.log("ul响应click事件");
        // }
        //
        // document.body.onclick = function (e){
        //     console.log("body响应click事件");
        // }
        //
        // // 2.通过addEventListener 方式监听事件,可以处理多个处理函数
        // let imgDom = document.getElementsByTagName("img")[0];
        // imgDom.addEventListener("click",function (event){
        //     console.log("通过addEventListener绑定的事件触发,1");
        // })
        // imgDom.addEventListener("click",function (event){
        //     console.log("通过addEventListener绑定的事件触发,2");
        // })
        // imgDom.addEventListener("click",function (event){
        //     console.log("通过addEventListener绑定的事件触发,3");
        // })
        //
        // //通过给onclick 数值函数,只能绑定一个事件处理函数,并且会覆盖
        // imgDom.onclick=(e)=>{
        //     console.log("通过onclick绑定事件:1");
        // };
        // imgDom.onclick =(e)=>{
        //     console.log("通过onclick绑定事件:2");
        // }

        //三、简单的BOM操作

        //window 以及下面的navigator,history,location,localstorage,cookieStore,setTimeOut,setInterval等等
        // 每一个对象都有较多属性

        //alert 弹出提示框
        // window.alert("welcome");
        // let proptResult=window.prompt("请输入你的名字","张三");
        // console.log(proptResult)

        //navigator相关
        let info=window.navigator.userAgent;
        let infoDom =document.createElement("footer");
        infoDom.textContent="您好!\n您的浏览器信息为"+info;
        document.body.appendChild(infoDom);


        // navigator.getBattery().then((battery)=>{
        //     console.log("是否在充电"+(battery.charging?"是":"否"));
        //     console.log("电池电量"+battery.level*100+"%");
        // })

        // let confirmResult = window.confirm("是否要跳转到百度");
        // if(confirmResult){
        //     window.location.href="http://www.baidu.com";
        // }

        //location的更多属性
        console.log("当前完整url为:",location.href);
        console.log("协议头",location.protocol);
        console.log("域名",location.host);
        console.log("路径",location.pathname);
        console.log("参数",location.search);
        console.log("哈希值",location.hash);

        //四、AJAX
        //1.使用XHR方式
        //使用XMLHttpRequest 对象与服务器通信
        // let httpRequest =new XMLHttpRequest();
        //
        // if(!httpRequest){
        //     alert("浏览器不支持 XMLHttpRequest");
        // }else {
        //     httpRequest.onreadystatechange = function (){
        //         if(httpRequest.readyState === httpRequest.DONE){
        //             if(httpRequest.status === 200){
        //                 console.log(httpRequest.responseText);
        //             }else {
        //                 console.log("There was a problem with request.")
        //             }
        //         }else {
        //             console.log("readyStat change: ",httpRequest.readyState)
        //         }
        //     }
        //     httpRequest.open(
        //         "GET",
        //         " https://mock.presstime.cn/mock/63bff4986c1337005665cebd/example/query"
        //     );
        //     httpRequest.send();
        // }

        //第二种方法fetch
        fetch(" https://mock.presstime.cn/mock/63bff4986c1337005665cebd/example/query")
            .then(function (response){
            return response.json();
        })
            .then(function (myJson){
            console.log(myJson);
        });

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值