JavaScript高级

目录

BOM

window对象

属性

方法

screen对象

location对象

history对象

DOM

Document

Document属性

Document方法

事件

事件连接

鼠标事件

键盘事件

窗口事件

表单事件

BOM

简介:浏览器对象模型

window对象

创建:在浏览器打开时自动创建,bom顶层对象

属性

获取浏览器对象 window.navigator

获取显示器对象 window.screen.availWidth

获取地址栏对象 window.location 如协议,ip,端口号,网址

获取历史记录对象 window.history

获取网页文档对象 window.document 所有网页的根节点

*网页可视化内部 window.innerWidth

window.innerHeight

网页可视化外部 window.outerWidth

window.outerHeight

JavaScript高级

由此可以看出可视化内部与外部的区别

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script type="text/javascript">
            console.log(window.navigator);
            console.log(window.screen.availWidth);
            console.log(window.location);
            console.log(window.history);
            console.log(window.document);
            console.log(window.innerWidth);
            console.log(window.innerHeight);
            console.log(window.outerWidth);
            console.log(window.outerHeight);

        </script>
    </head>
    <body>

    </body>
</html>

方法

1.打开 window.open(“https://www.baidu.com”);

关闭 window.close();

2.弹框类*

警告框 window.alert(“此网页有风险”);

JavaScript高级

确认框 window.confirm(“你想真正的活着吗”);

JavaScript高级

这个返回值是boolean型的

输入框

var t = window.prompt(“请输入账号”,”9527″);

console.log(t);

里面两个参数,

第一个是提示文本,

第二个是默认文字内容

返回值为输入的内容,如果没有输入,返回为null

3.执行任务类

延迟执行*

setTimeout();

clearTimeout(); 阻止延迟执行

function test01(){
        console.log("&#x5EF6;&#x8FDF;&#x6267;&#x884C;")

}
//&#x8BBE;&#x7F6E;&#x5EF6;&#x8FDF;&#x4EFB;&#x52A1;,&#x8FD4;&#x56DE;&#x503C;&#x4E3A;&#x5EF6;&#x8FDF;&#x4EFB;&#x52A1;&#x5BF9;&#x8C61;
var time = setTimeout("test01()",5000);
//&#x5EF6;&#x8FDF;5s
clearTimeout(time);//&#x963B;&#x6B62;&#x5EF6;&#x8FDF;&#x4EFB;&#x52A1;

重复执行

setInterval();//

clearInterval();//阻止重复执行

function test01(){
    console.log("test01&#x65B9;&#x6CD5;&#x88AB;&#x6267;&#x884C;");
}//

var task = setInterval("test01()",3000);//&#x6BCF;&#x9694;3s&#x6267;&#x884C;&#x4E00;&#x6B21;
//setInterval(test01,3000);  &#x8FD9;&#x6837;&#x5199;&#x4E5F;&#x53EF;&#x4EE5;
clearInterval(task);//&#x963B;&#x6B62;&#x91CD;&#x590D;&#x6267;&#x884C;

简介:代表浏览器

浏览器的代码名:navigator.appCodeName

返回浏览器的名称:navigator.appName

返回浏览器的平台和版本信息,是只读的字符串:navigator.appVersion

console.log(navigator.appCodeName);

console.log(navigator.appName);

console.log(navigator.appVersion);

JavaScript高级

screen对象

简介:显示器

宽 screen.width

高 screen.height

宽 screen.availWidth

高 screen.availHeight

显示浏览器的屏幕的可用宽度,

可用高度不包括分配给半永久特性(如屏幕底部的任务栏)的垂直空间

实际物理屏幕宽度与高度,有的浏览器不支持

screen.deviceXDPI

screen.deviceYDPI

//console.log(screen.width);

&#xA0;//console.log(screen.height);

//console.log(screen.availWidth);

//console.log(screen.availHeight);

console.log(screen.deviceXDPI);

console.log(screen.deviceYDPI);

JavaScript高级

location对象

简介:网址

属性

1本机地址 location.host

2获取ip: location.hostname

3获取端口 location.port

4包含所有信息 location.href; (*)

5跳转 location.href = “https://www.baidu.com”;

方法:

6创建 location.assign(url)

相当于创建了一个新页面,可以点击后退返回上一个页面。

7重新加载,刷新 location.reload();(*)

8替换 location.replace(“https://www.taobao.com”);(*)

将当前页面替换为新的页面

history对象

简介:历史记录

1返回历史列表中的网址数 history.length

2加载 history 列表中的前一个 URL history.back();

3加载 history 列表中的下一个 URL history.forward();

4加载 history 列表中的某个具体页面 history.go(数字)

例:-1后退一个,0代表当前,1代表向前一个

DOM

简介

中文名称:文档对象模型

结构:树型结构

例如:

JavaScript高级

方块就是个树形的节点

Document

Document属性

网页地址 document.URL

网页标题 document.title

使用cookie 例:使用键值对存储

document.cookie = "username=admin";
document.cookie = "password=123456";

取值

document.cookie

键相同就是修改,不同就是修改,添加中文时可对其进行编码

escape()

不一定要键值对,存字符串也可以

Document方法

1.输出

document.write("&#x4F60;&#x597D;&#x4E16;&#x754C;<input>");

2.寻找html标签

getElementById 通过id的属性值寻找对应的标签,只会寻找到一个,第一个

返回值为object

var img = document.getElementById("img01");

getElementsByClassName:通过class的属性值寻找指定的标签,返回值为一个数组

var texts = document.getElementsByClassName("text");
console.log(texts);
console.log(texts.length);
console.log(texts[0]);
console.log(texts[2]);

getElementsByTagName:通过标签名寻找指定的标签 返回值为一个数组

var h1s = document.getElementsByTagName("h1");

getElementsByName:通过name的属性值进行寻找 返回值为一个数组

var tests = document.getElementsByName("xxx");

3.对标签属性的操作

方式1

通过属性 先找到此标签,再修改,

setAttribute

<input type="text" id="input">
var inputs = document.getElementsByTagName("input");
var i = inputs[0];
i.setAttribute("class","username");//&#x6DFB;&#x52A0;&#x5C5E;&#x6027;
i.setAttribute("placeholder","&#x8BF7;&#x8F93;&#x5165;&#x8D26;&#x53F7;");//&#x6DFB;&#x52A0;&#x4E00;&#x4E2A;&#x63D0;&#x793A;
i.setAttribute("type","password");//&#x4FEE;&#x6539;&#x666E;&#x901A;&#x6587;&#x672C;&#x4E3A;&#x5BC6;&#x6587;

有就添加,没有就修改

&#x83B7;&#x53D6;&#x5C5E;&#x6027;&#xFF0C;&#x4F7F;&#x7528;getAttribute
&#x4F8B;&#x5982;&#xFF1A;
i.setAttribute("type","password");
var iId = i.getAttribute("id");
console.log(iId);

打印结果为input

方式2

通过id寻找,再修改

使用.直接修改

var i = document.getElementById("input");
i.className = "username";
i.placeholder = "&#x8BF7;&#x8F93;&#x5165;&#x8D26;&#x53F7;";
i.type = "password";
console.log(i.id);

4.对标签样式的操作

设置样式 获取样式

                                   <style type="text/css">
                                        #box{
                                    font-size: 40px;
                                    对标签内容的操作
                                    }
                                        </style>
<body>
<div id="box" style="width: 200px; height: 200px; background:
orange;">
&#x8FD9;&#x662F;&#x4E00;&#x6BB5;&#x6587;&#x672C;
</div></body>
<script type="text/javascript">
    var box = document.getElementById("box");
    box.style.background = "green";
    var w = box.style.width;
    console.log(w);
    var size = box.style.fontSize;//不能获取
    console.log(size);
    box.style.fontSize = "60px";//可以修改
</script>

注意:只能对内联样式进行操作,如果对css中已有属性进行修改,则只相当于内联样式的修改不会改变其它,但是不能获取

5.对标签内容的操作

var box = document.getElementById("box");
console.log(box.innerText);//&#x53EA;&#x83B7;&#x53D6;&#x6587;&#x672C;
console.log(box.innerHTML);//&#x83B7;&#x53D6;&#x6240;&#x6709;&#x5185;&#x5BB9;

&#x5305;&#x62EC;&#x6807;&#x7B7E;&#x7A7A;&#x683C;&#x4E4B;&#x7C7B;&#x7684;

box.innerText=""   &#x4F1A;&#x628A;&#x6DFB;&#x52A0;&#x7684;&#x5185;&#x5BB9;&#x4EE5;&#x6587;&#x672C;&#x65B9;&#x5F0F; &#x8986;&#x76D6; &#x539F;&#x5185;&#x5BB9;
box.innerHTML=""   &#x6807;&#x7B7E;&#x4E4B;&#x7C7B;&#x7684;&#x4E1C;&#x897F;&#x90FD;&#x4F1A;&#x6DFB;&#x52A0;&#xFF0C;&#x4E5F;&#x4F1A;&#x8986;&#x76D6;

&#x5982;&#x679C;&#x4E0D;&#x60F3;&#x8986;&#x76D6;&#xFF0C;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x5B57;&#x7B26;&#x4E32;&#x6DFB;&#x52A0;

box.innerHTML=box.innerHTML+"xxxxx"

6.对节点操作

创建节点

document.createElement(“xxx”)

返回值就是创建的标签

添加节点

父容器.appendChild(b标签对象)

插入节点

父容器对象.insertBefore(要插入的标签,插入在某标签前);

替换节点

父容器对象.replaceChild(要替换的,被替换的);

删除节点

父容器对象.removeChild(被删除的);

#box01{
    background: orange;
}
var img = document.createElement("img");
    img.src = "img/qq.png";
    img.style.width = "100px";//&#x8BBE;&#x7F6E;&#x6837;&#x5F0F;
    var box01 = document.getElementById("box01");

    box01.appendChild(img);//&#x6DFB;&#x52A0;&#x5230;&#x5C3E;&#x90E8;
var hr = document.createElement("hr");//&#x521B;&#x5EFA;&#x4E00;&#x4E2A;&#x5206;&#x5272;&#x7EBF;
var font02 = document.getElementById("font02");//&#x83B7;&#x53D6;&#x4E00;&#x4E2A;&#x6807;&#x7B7E;
var box02 = document.getElementById("box02");//&#x83B7;&#x53D6;&#x7236;&#x5BB9;&#x5668;

box02.insertBefore(hr,font02);//
&#x8BED;&#x6CD5;&#xFF1A;
//&#x7236;&#x5BB9;&#x5668;&#x5BF9;&#x8C61;.insertBefore(&#x8981;&#x63D2;&#x5165;&#x7684;&#x6807;&#x7B7E;,&#x63D2;&#x5165;&#x5728;&#x67D0;&#x6807;&#x7B7E;&#x524D;);
var i = document.createElement("input");
    //&#x66FF;&#x6362;&#x8282;&#x70B9;
box02.replaceChild(i,font02);
    //&#x5220;&#x9664;&#x8282;&#x70B9;
box02.removeChild(i);

事件

事件连接

内联:直接在事件属性后写方法的方法名

<script type="text/javascript">
    function myClick(){
        alert("图片被点击了");
    }
</script>
<img src="img/qianfeng.png" onclick="myClick()">

外联:

<body>
    <font id="btn">&#x767E;&#x5EA6;&#x4E00;&#x4E0B;</font>
</body>
<script type="text/javascript">
        var font = document.getElementById("btn");
        font.onclick = function(){
        location.href = "www.baidu.com";
}
</script>
//&#x5148;&#x627E;&#x6807;&#x7B7E;&#xFF0C;&#x518D;&#x7528;&#x6807;&#x7B7E;&#x64CD;&#x4F5C;

鼠标事件

&#x70B9;&#x51FB;&#x4E8B;&#x4EF6;(*):onclick
&#x53CC;&#x51FB;&#x4E8B;&#x4EF6;:ondblclick
&#x9F20;&#x6807;&#x79FB;&#x5165;(*):onmouseenter
&#x9F20;&#x6807;&#x79FB;&#x51FA;(*):onmouseleave
&#x9F20;&#x6807;&#x79FB;&#x52A8;:onmousemove
&#x9F20;&#x6807;&#x5DE6;&#x952E;&#x6309;&#x4E0B;:onmousedown
&#x9F20;&#x6807;&#x5DE6;&#x952E;&#x62AC;&#x8D77;:onmouseup
<body>
    <img src="img/qianfeng.png" id="img">
</body>
<script type="text/javascript">
    var img = document.getElementById("img");//寻找img
        img.onclick = function(){
            alert("按钮被点击了");
        }
        img.ondblclick = function(){
            alert("按钮被双击了");
        };
</script>

键盘事件

document.onkeydown = function(){//&#x6301;&#x7EED;&#x9664;&#x6CD5;

    switch(window.event.key){//&#x53EA;&#x5BF9;&#x5B57;&#x6BCD;&#x89E6;&#x53D1;
    case "a":&#x6267;&#x884C;&#x7684;&#x4EE3;&#x7801;
        break;
    case "s":&#x6267;&#x884C;&#x7684;&#x4EE3;&#x7801;

        break;
    case "d":

        break;
    case "w":

        break;
}

}

窗口事件

onload:页面加载完成后

onscroll:页面滑动时触发

<script type="text/javascript">
            window.onload = function(){
                    document.body.scrollTop;//可以获取滑块的数值向下滑返回值变大
                    //可以监听滑块位置了
                    window. onscroll = function(){

                  }

            }
        </script>

表单事件

主要使用于input之类的

获取焦点

i.onfocus = function(){
    console.log("&#x83B7;&#x53D6;&#x5230;&#x4E86;&#x7126;&#x70B9;");
}

失去焦点

    i.onblur = function(){
                    console.log("&#x5931;&#x53BB;&#x7126;&#x70B9;");
                }

内容发生改变

i.onchange = function(){
                    //&#x5931;&#x53BB;&#x7126;&#x70B9;&#x540E;,&#x5224;&#x65AD;&#x76EE;&#x524D;&#x7684;&#x5185;&#x5BB9;&#x4E0E;&#x4EE5;&#x524D;&#x7684;&#x5185;&#x5BB9;&#x662F;&#x5426;&#x6709;&#x6539;&#x53D8;
                    //&#x5982;&#x679C;&#x6709;&#x6539;&#x53D8;,&#x89E6;&#x53D1;&#x8BE5;&#x4E8B;&#x4EF6;
                    console.log("&#x5185;&#x5BB9;&#x53D1;&#x751F;&#x6539;&#x53D8;");
                }

选中

i.onselect = function(){
                    console.log("&#x5185;&#x5BB9;&#x88AB;&#x9009;&#x4E2D;");
                }

提交(必须给form设置)

form02.onsubmit = function(){

}

重置(必须给form设置)

form02.onreset = function(){

}

事件:Event

获取Event对象

获取事件对象:window.event

js中规定:事件不仅能够和触发者交互,还会在特定的情况下沿着dom tree逐级传递,和dom tree中的各个节点进行交互。而js中的这种机制被称为事件传递机制。
事件传递方式主要分两种:事件冒泡、事件捕获

事件冒泡:事件从最具体的元素开始,沿着DOM树逐级向上依次触发,直至最不具体的元素停止。
事件捕获:事件从最不具体的元素开始,沿着DOM树逐级向下依次触发,直至达到最具体的元素停止。
w3c规定:事件冒泡+事件捕获+事件真正的触发者等各个分支构成了js的事件机制。

事件冒泡:

var box = document.getElementById("box");
        var btn = document.getElementById("btn");
        box.onclick = function(){
            console.log("box&#x88AB;&#x70B9;&#x51FB;&#x4E86;");
        }
        btn.onclick = function(){
            console.log("&#x6309;&#x94AE;&#x88AB;&#x70B9;&#x51FB;&#x4E86;");
            //&#x963B;&#x6B62;&#x4E8B;&#x4EF6;&#x5192;&#x6CE1;
            //window.event.stopPropagation();
        }

当点击按钮时,事件沿着DOM向上依次触发,所以点击按钮后,box也会被点击,

可以在按钮点击完成后阻止事件发生,添加就行 window.event.stopPropagation();

Original: https://blog.csdn.net/weixin_44207220/article/details/127793112
Author: 四水木天
Title: JavaScript高级

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/655546/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球