BOM, 定时器, jQuery基础

这里写目录标题

BOM

概述

BOM(Browser Object Model) 是指浏览器对象模型,浏览器对象模型提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。BOM由多个对象组成,其中代表浏览器窗口的Window对象是BOM的顶层对象,其他对象都是该对象的子对象。
我们在浏览器中的一些操作都可以使用BOM的方式进行编程处理,
比如:刷新浏览器、后退、前进、在浏览器中输入URL等

BOM*对象

window是浏览器的*对象,当调用window下的属性和方法时,可以省略window注意:window下一个特殊的属性 window.name

对话框

<script>
        alert("警告框");
        // 返回输入的内容
        var content = prompt("请输入密码");

        // 确定返回true,取消返回false
        var flag = confirm("确定退出吗?");

        window.onload=function(){
            
        }
    </script>

window.location

<script>
    // 地址栏上(浏览器最上边)#后面的内容
    console.log(window.location.hash);
    // 主机名和端口号  localhost:52332  注意: 需要Ctrl+1 直接在vscode里打开浏览器才可以  直接复制路径是不行的
    console.log(window.location.host);
    // 主机名   localhost
    console.log(window.location.hostname);
    // 文件的路径---相对路径  
    console.log(window.location.pathname);
    // 端口号
    console.log(window.location.port);
    // 协议
    console.log(window.location.protocol);
  </script>

history

<script>
  // 跳转到test.html

  $("#btn1").click(
    function () {
      window.location.href = "test.html";
    }
  );
  // 前进
  $('#btn2').click(() => {
    window.history.forward()
  });
  $('btn3').click(() => {
    window.history.back()
  }
  );
</script>

window.navigator

<script>
    // 通过userAgent 可以判断浏览器的类型
    console.log(window.navigator.userAgent);
    // 通过platform可以判断浏览器所在的系统平台类型
    console.log(window.navigator.platform);
  </script>

定时器

setTimeout

<script>
        // 1 setTimeout : 多久后执行(单位毫秒(1秒=1000毫秒)),并且只执行一次
        // setTimeout(做什么(回调函数),多久之后);
        setTimeout(() => {
            console.log(1111);
        }, 2000);
        // 上面和下面同时执行,异步,就是定时器会开启一个新线程,来运行该程序
        console.log(22222);

        window.onload = function () {
            // 需求 : 点击按钮的时候,绑定一个定时器,1秒之后面向页面输出1
            // 并返回一个true/false,如果返回true,再追加输出一个2,如果false,输出3
            $("#btn").click(() => {
                var flag;

                setTimeout(() => {
                    document.write(1);
                    flag = true;
                    return flag;
                }, 1000);
                if (flag) {
                    document.write(2);
                } else {
                    document.write(3);
                }
            });
        }

    </script>

setInterval

 <script>
        // 2 setInterval : 没隔多久  做什么事
        // setInterval(做什么,间隔时间);
        var count = 0;
        // 返回定时器的ID,可以根据这个ID 清除这个定时器
        var timer = setInterval(() => {
            document.write(count++ + "<br>");
            if (count >= 10) {
                // return是不能清除这个定时器的
                // return;
                // 清除定时器
                clearInterval(timer)
            }
        }, 2000);
        console.log(timer);
    </script>

jQuery基础

jQuery基础语法

<!-- 引入jQuery函数库 -->
    <script src="./js/jquery-1.11.1.min.js"></script>
    <script>
        // dom树加载完就可以执行,可以写多个
        jQuery(document).ready(()=>{
            console.log('ready-1');
        });
        jQuery(document).ready(()=>{
            console.log('ready-2');
        });
        // $ = jQuery 在jQuery内容,为了使用方便,用$ 和jQuery是一样,定义了$这个变量
        // 如果$和其他框架冲突,就要使用jQuery了
        $(document).ready(()=>{
            console.log('ready-3');
        });
        // 简单写法
        $(()=>{
            console.log('ready-4');
        })
       
    </script>

基础选择器

<script>
        // 得到ID为xxx的jQuery对象,并不是DOM
        // jQuery对象中封装的是DOM,如果需要用到DOM对象的话,就需要通过[下标] 取出
        $("#xxx");
        // 根据类名获取
        $(".className");
        // 根据标签名获取
        $("标签名");
        // 并集选择器
        $("div.className");
        // 交集选择器
        $("div,p,#xxx,.xxx");
        // 子代
        $("div>p>.class");
        // 后代
        $("div p");
        // 属性 : 有type属性的input
        $("input[type]");
        // 属性 : type属性值为password的input
        $("input[type='password']");
        // 属性 : href属性值以http打头的a标签
        $("a[href^=http]");
        // 属性 : href属性值以com结尾的a标签
        $("a[href$=com]");
    </script>

过滤选择器

<script>
        $(() => {
            // CSS函数的使用
            // 1 一个参数, 如果是对象, 则对所有DOM对象设置多个样式, 支持链式调用
            // 2 一个参数, 不是对象, 就认为是属性, 则返回第一个DOM对象的属性的值, 不支持链式调用
            // 3 两个参数, 第一个attr是属性, 第二个value是属性对应的值, 则对所有DOM设置该样式和值
            
            // 从0开始 获取所有li标签,然后只要第 2个 (下标为0开始)
            $("li:eq(2)").css({'color':'red','background-color':'green'});
            
            // 获取所有li,然后只要奇数 (0开始,0算偶数)
            $("li:odd").css("color","blue");
            // 同上,取偶数
            $("li:even").css("color","pink");
            // 获取小于2的,0开始
            $("li:lt(2)").css("background-color","yellow");
            // 获取大于2的,0开始
            $("li:gt(2)").css("background-color","black");
        });
    </script>

筛选选择器

<script>
        $(()=>{
            // 获取所有子标签
            $("div").children().css("color","red");
            // 获取指定子标签 (子代,h2中的span不会被选择)
            $("div").children("span").css("color","blue");
            // find 就是查找后代
            $("div").find("span").css("color",'green');

            // 获取所有子标签,然后只要第二个,下标 0 开始
            $("div").children().eq(2).css("color",'pink');

            // 获得兄弟节点(同级) (当前作用域中,非自己的标签 )
            $('h2').siblings().css('background-color','red');
            // 获取下一个标签(同级)
            $('h2').next().css('background-color','black');
            // 获取 下一个标签(同级),并且下一个标签必须是h3标签才行,如果不是h3,就不获取
            $('h2').next('h3').css('background-color','blue');

            // 获取后面的标签(同级)
            $('h2').nextAll().css('background-color','blue');

            // 获取所有子标签,然后通过not进行筛选,不要span标签、h3标签、class属性值为h的标签
            $('div').children().not('span,h3,.h').css("font-size",'50px');
        });

事件

<script>
        $(()=>{
            var p = $("p");
            // 点击
            // 箭头函数的上下文环境是window
            p.click(function(e) {
                // this 是jQuery对象中封装的DOM对象
                console.log(this);
                console.log(this.innerText);
                // 通过$(DOM对象) 就可以把DOM对象转换为jQuery对象
                // text函数 等于 innerText , 无参是获取,有参是设置
                console.log($(this).text());
                // 事件源得到的也是DOM对象
                console.log(e.target.innerText);
            });
            // 双击
            p.dblclick(function(){
                // 隐藏,参数可以不写,不写没有动画效果,写就是毫秒数,多长时间内隐藏完成
                $(this).hide(1000);
            });
            // 移入
            p.mouseenter(function(){
                $(this).css("color",'red');
                console.log('移入...');
            });
            // 移出
            p.mouseleave(function(){
                $(this).css("color",'');
                console.log('移出...');
            });
            $("#btn").click(function(){
                // 显示 , 同hide
                $("p").show(1000);
            });
            $("#btn1").click(function(){
                // 切换.显示就隐藏,隐藏就显示,同hide
                $("p").toggle(1000);
            });
        });
    </script>

class操作

<script>
        $(function(){
            var add = $("#add");
            var remove = $("#remove");
            var toggle = $("#toggle");
            var p = $("p");
            var btns = $("button");

            add.click(function(){
                // 添加class  
                p.addClass('g');
                console.log(btns.index(this));
            });
            remove.click(function(){
                // 删除class  
                p.removeClass('g');
                console.log(btns.index(this));
            });
            toggle.click(function(){
                // 切换class,有就删除,没有就添加  
                p.toggleClass('g');
                console.log(btns.index(this));
            });
        });
    </script>
上一篇:【BOM】Window对象


下一篇:BOM