《JS—Dom》

1_Dom简介

什么是API?

         应用程序编程接口(Application Programming Interface,API)是软件系统预先定义的接口,

         用于软件系统不同组成部分的衔接。每一种开发语言都有自己的API。

         例如console.log方法。就是JS的一个API。

        文档对象模型(Document Object Model,DOM)用于处理HTML文档的编程接口。

        翻译:对HTML内部的标签进行处理。

2_如何通过DOM获取元素节点

<body>

        <h3 id="c" name="b">我是h3标签</h3>

        <h3 class="a">我是h3标签</h3>

        <h3 class="a">我是h3标签</h3>

        

        <p name="b" class="a">我是p标签</p>

        

        <script>

            //通过DOM节点获取HTML元素的4种方法 每种方法都要掌握.非常相似.

            

            //方法1:通过标签名获取元素

            var a = document.getElementsByTagName("h3");

            //此时就已经获取到了页面上所有的h3标签 注意返回的一定是一个数组(遍历).即使只有一个h3标签,也是数组.

            //至于怎么去处理,就是后续的任务.

            

            //方法2:通过class名获取元素

            var b = document.getElementsByClassName("a");

            //此时就已经获取到了页面上所有的class为a标签 注意返回的一定是一个数组(遍历).即使只有一个h3标签,也是数组.

            

            //方法3:通过name获取元素

            var c = document.getElementsByName("b");

            //此时就已经获取到了页面上所有的class为a标签 注意返回的一定是一个数组(遍历).即使只有一个h3标签,也是数组.

            

            //方法4:通过id获取元素 因为id是唯一标识符 所以返回的是一个元素,可以直接处理

            var d = document.getElementById("c");

            

        </script>

        

    </body>

3_如何操作节点

<body>

        <h3 id="c" name="b">我是h3标签</h3>

        

        

        <h3 class="a">我是h3标签1<a href="#">你好</a> </h3>

        

        <input type="text" id="abc" value="739737680" />

        

        

        <script>

            /*

                    常见的操作节点的三个属性:

                    1.innerText表示给标签内部重新赋值或取值 这里是文本值

                    

                    2.innerHtml表示给标签内部重新赋值或取值 这里是html值

                    

                    

                    注意以上2个方法只能作用于 非表单元素 例如 h标签 a标签 p标签等等

                    

                    //第三个方法只能作用于表单元素

                    例如input

                    

                    方法3: value表示给标签内部重新赋值或取值 这里是html值

                    

                    

            */

            

            

            // var a = document.getElementsByTagName("h3");

            // for(var i = 0 ;i<a.length;i++){

            //  console.log(a[i].innerText);//表示获取各个h3标签内部的文本值

            //  a[i].innerHTML = "<a href='#'>你好</a>";

            // }

            

            

            

            // var b = document.getElementsByClassName("a");

            // for(var i = 0 ;i<b.length;i++){

            //  console.log(b[i].innerHTML);//表示获取各个h3标签内部的文本值

            // }

            

            

            

            

            

            var d = document.getElementById("abc");

            // d.value = "账号123";

            console.log(d.value);

            

        </script>

        

    </body>

4_如何操作节点的样式

<style>

            

            .abcd{

                color: red;

                background-color: blue;

                font-size: 40px;

            }

            

        </style>

        

    </head>

    <body>

        <p id="abc" >你好,我是p标签</p>

        

        <script>

            var p = document.getElementById("abc");

            //如何改变一个节点的样式:

            //步骤1.思考需要修改什么样式

            //步骤2.去css里面查看该样式的单词

            //步骤3.按照提示来

            //步骤4.通过 节点.style.xxx 表示取值或赋值

            

            

            //例如我要修改字体颜色

            // p.style.color = "red";

            // console.log(p.style.color)

            

            //例如我要修改背景色

            // p.style.backgroundColor = "green"

            

            

            

            //以上写法的缺点: 麻烦 每次只能修改一个样式

            

            //所以: 如果样式很多,我们可以先将其封装到一个css里面

            p.className = "abcd";//表示给该元素 赋予一个class为abcd的属性

            

        </script>

5_js中的事件管理

<style>

            img{

                width: 200px;

                height: 200px;

            }

        </style>

        

    </head>

    <body>

        <p id="a">你好</p>

        <p>你好</p>

        <p>你好</p>

        <p>你好</p>

        

        <hr>

        <img src="img/1.PNG" />

        <hr>

        账号:<input type="text" id="aaa" /> <span id="bbb"></span> <!--提示用语 -->

        

        <script>

            //js中的事件: 用户对前台页面做出的一些操作 来触发一些函数

            //例如用户的单击 双击 等等等等

            

            //需求:用户点击id为a的元素 弹出一个窗口

            //步骤1:获取元素

            // 步骤2: 元素.事件名 = function(){代码体}

            //步骤3 常见的事件名:

            //单击事件 onclick

            

            

            // document.getElementById("a").onclick = function(){

            //  alert(123);

            // }

            

            

            // //需求2:给所有的p标签加上点击事件 下面的写法是错误的 需要遍历

            // // document.getElementsByTagName("p");.onclick = function(){

            // //   alert(123);

            // // }

            // var p = document.getElementsByTagName("p");

            // for(var i = 0 ;i<p.length;i++){

                

            //  p[i].onclick = function(){

            //      alert(456);

            //  }

                

            // }

            

            

            //双击事件

            // document.getElementById("a").ondblclick = function(){

            //  alert(123);

            // }

            

            

            //鼠标移入事件 悬浮事件

            //需求:鼠标放上图片 图片就放大2倍 鼠标移出就恢复原状

            

            //鼠标移入事件onmouseover

            // document.getElementsByTagName("img")[0].onmouseover = function(){

            //  document.getElementsByTagName("img")[0].style.width = "400px";

            //  document.getElementsByTagName("img")[0].style.height = "400px";

            // }

            

            

            // //鼠标移出事件onmouseout

            // document.getElementsByTagName("img")[0].onmouseout = function(){

            //  document.getElementsByTagName("img")[0].style.width = "200px";

            //  document.getElementsByTagName("img")[0].style.height = "200px";

            // }

            

            

            //输入账号,失去焦点就需要数据校验

            

            document.getElementById("aaa").onblur = function(){

                var str = document.getElementById("aaa").value;

                 if(str.length >10){

                     document.getElementById("bbb").innerText = "长度太长了";

                     document.getElementById("bbb").style.color = "red";

                 }else{

                     document.getElementById("bbb").innerText = "数据合格";

                     document.getElementById("bbb").style.color = "green";

                 }

            }

            

            

            

        </script>

        

    </body>

6_js的属性

<body>

        

        <a id="a" href="1_dom简介.html">进入1页面</a>

        

        <button id="abc">按钮</button>

        

        

        <img id="b" src="img/1.PNG" />

        

        

        <h3></h3>

        <button id="btn">开始点名</button>

        

        

        

        <script>

            //js获取元素的属性:

            //元素的常见属性: id class src href

            

            //需求:点击按钮 让这个a标签的href改成跳转到第二个页面

            //需求 点击按钮,进入下一张图片

            document.getElementById("abc").onclick = function(){

                document.getElementById("a").setAttribute("href" , "2_如何通过DOM获取元素节点.html");

                document.getElementById('b').setAttribute("src","img/2.PNG");

            }

            

            

            

            //点击开始点名按钮 来回切换

            document.getElementById("btn").onclick = function(){

                if(document.getElementById("btn").innerText=="开始点名"){

                    document.getElementById("btn").innerText = "停止点名"

                }else{

                    document.getElementById("btn").innerText = "开始点名"

                }

            }   

       

        </script>

    </body>

7_单击事件的案例

<body>

        <button>开始点名</button>

        

        

        <script>

            //需求如下:点击按钮 来回展示开始点名或停止点名

            //思路:获取到button标签,然后给它赋予一个点击事件.

            //接着判断button标签内部的value值.根据值来进行判断.进而修改/

            

            var btn = document.getElementsByTagName("button")[0];

            

            

            btn.onclick = function(){

                //获取button的文本值.

                var text = btn.innerText ;

                if(text=="开始点名"){

                    btn.innerText = "停止点名"

                }else{

                    btn.innerText = "开始点名";

                }

            }

            

            

        </script>

    </body>

8_双击事件的案例

<style>

            div{

                width: 230px;

                height: 230px;

                text-align: center;

                border : 1px solid black;

                display: none;

            }

        </style>

        

    </head>

    <body>

        <button>双击打开登录页面</button>

        

        <div>

            <h3>登录弹窗!!</h3>

            账号<input type="text" placeholder="请输入你的账号" /> <br>

            密码<input type="password" placeholder="请输入你的密码" /> <br><br><br>

            <button>登录</button> <button>返回</button>

        </div>

        

        

        

        <script>

            

            //思考:浏览器中的弹窗为啥那么好看

            //但是我们学习的三个弹窗 一个比一个丑

            //其实浏览器的弹窗 并不是真正的弹窗.

            //思路: 就是一个提前绘制好的一个div页面.然后将其隐藏. 当用户触发的时候就蹦出来.实现一个弹窗的效果.

            

            

            //需求:双击打开登录页面

            document.getElementsByTagName("button")[0].ondblclick = function(){

                

                document.getElementsByTagName("div")[0].style.display = "block";

                

            }

            

            document.getElementsByTagName("button")[2].onclick = function(){

                document.getElementsByTagName("div")[0].style.display = "none";

            }

        </script>

        

    </body>

9_迷你版点名系统

<style>

            font{

                border: 1px solid red ;

            }

        </style>

    </head>

    <body>

        <font id="1">张三1</font>

        <font id="2">张三2</font>

        <font id="3">张三3</font>

        <font id="4">张三4</font>

        <font id="5">张三5</font>

        <hr>

        <button id="btn">开始点名</button>

        

        <script>

            

            document.getElementById("btn").onclick = function(){

                if(document.getElementById("btn").innerText=="开始点名"){

                    document.getElementById("btn").innerText = "停止点名"

                    //让5个名字对应的font标签的背景色改变

                    var r =Math.ceil(Math.random()*5);//(0,5)

                    document.getElementById(r).style.backgroundColor = "red";

                    

                }else{

                    document.getElementById("btn").innerText = "开始点名"

                }

                

            }   

            

        </script>

    </body>

10_鼠标移入移出事件

<style>

            .a{

                width: 200px;

                height: 200px;

            }

            .b{

                width: 400px;

                height: 400px;

            }

            

            

        </style>

    </head>

    <body>

        

        <img class="a" src="img/1.PNG">

        

        <script>

            //需求 鼠标移入图片内部 ,图片放大 鼠标移出图片 图片还原

            var img = document.getElementsByTagName("img")[0];

            

            img.onmouseover = function(){

                    // img.style.width = "400px";

                    // img.style.height = "400px";

                    img.className = "b";

            }

            

            img.onmouseout = function(){

                    // img.style.width = "200px";

                    // img.style.height = "200px";

                    img.className = "a";

            }

            

        </script>

        

    </body>

11_演示键盘输入事件

<body>

        小写字母:<input type="text" id="a" /> <br>

        大写字母:<input type="text" id="b" />

        

        <script>

            //在第一个文本框输入小写字母.下面的文本框默认输出上面的与之对应的大写字母

            

            //思路:给第一个文本框加上键盘输入事件(每敲击一下键盘就触发一下事件).

            //获取第一个文本框的值.然后赋予给第二个文本框

            

            var i1 = document.getElementById("a");

            var i2 = document.getElementById("b");

            i1.onkeyup = function(){

                i2.value = i1.value.toUpperCase();

            }

            

        </script>

        

    </body>

12_演示获取焦点和失去焦点事件

<body>

        账号:<input type="text" id="a" />        <span id="c"></span>       <br>

        

        <script>

            var username = document.getElementById("a");

            var password = document.getElementById("a");

            var tip1 = document.getElementById("c");

            var tip2 = document.getElementById("d");

            

            //需求:输入账号之后.提示账号输入规则.

            //思路给文本框加上获取焦点事件 给第一个span标签生产一个提示用于

            username.onfocus = function(){

                tip1.innerText = "账号的长度要在6-10之间";

                tip1.style.color = "red";

            }

            

            //需求2:输入完成之后,要判断账号是否符合格式.

            //思路:失去焦点之后判断.

            username.onblur = function(){

                var username123 = username.value;

                if (username123.length >=6 && username123.length<=10) {

                    tip1.innerText = "√";

                    tip1.style.color = "green";

                } else{

                    tip1.innerText = "X";

                    tip1.style.color = "red";

                }

            }

            

            

        </script>

        

    </body>

13_复习表单

<body>

        <!--

            表单:form

            应用场景: 用户登录、 用户注册 添加一个商品信息

            

            凡是需要将多个数据打包发送的 都可以使用表单。

            

            form表单三大属性:

            

            A.action表示将表单提交给谁。一般放一个URL地址 其中#表示不提交

            B.method表示表单的提交方式:只有2个选择、1.get 2.post 默认是get。

            

            

                区别如下:

                get的速度快。因为只能携带极少的数据。 不安全,会将表单数据全部显示在url地址。是客户端行为(只依赖浏览器)

                

                post的速度慢:因为可以携带理论上无限大的数据。安全。不会将表单数据全部显示在url地址。是服务端行为(依赖服务器)

            

            C.enctype:表示该表单是什么类型的表单。

            默认值1:   application/x-www-form-urlencoded 表示普通表单 所以:绝大部分表单都可以不用加。

            可选值2: multipart/form-data 表示文件上传的表单。如果需要文件上传就只能用这个。

            可选值3: text/plain 表示大文本类型 常用于国家化传输邮件。

            

            

            如何将表单打包发送给action的路径:

            通过提交按钮:以下三种方式 均可。 一般使用第三种。

            1 <button>提交(登录)</button>

            2 <button type="submit">登录提交</button>

            3 <input type="submit" value="登录提交" />

            

            

            后台如何获取表单内部的数据。

            只需要在表单内部的标签元素中 添加name属性即可。(必须要加的,否则获取不到值)

            后台只需要根据name来取值。

            

            

            

            串讲:button标签的易错事项。

            

            button标签的完整写法:

            <button type="xxx">按钮</button>

            其中type的取值有3个:

            1.submit 默认值 表示提交按钮

            2.button 可选择 表示普通的按钮

            3.reset 可选择 表示重置按钮

            

            button标签中type属性的默认值是 submit 如果该标签放在form表单则会提交表单。

            但是如果没在,就是一个普通的按钮

            

            

            

            

            

         -->

        

        <form action="#" method="post" enctype="text/plain" >

            账号:<input type="text" id="a" name="username" /> <br>

            密码:<input type="password" id="b" name="password" /> <br>

            <input type="submit" value="登录提交" />

        </form>

        

    </body>

14_演示表单提交事件

<body>

        <form id="f" action="#" method="post">

            账号:<input type="text" id="a" />            <span id="c"></span>       <br>

            密码:<input type="password" id="b" />        <span id="d"></span>       <br>

            <input type="submit" value="登录" />

        </form>

        <script>

            var username = document.getElementById("a");

            var password = document.getElementById("b");

            var tip1 = document.getElementById("c");

            var tip2 = document.getElementById("d");

            var f = document.getElementById("f");

            

            

            //需求:输入账号之后.提示账号输入规则.

            //思路给文本框加上获取焦点事件 给第一个span标签生产一个提示用于

            username.onfocus = function(){

                tip1.innerText = "账号的长度要在6-10之间";

                tip1.style.color = "red";

            }

            

            //需求2:输入完成之后,要判断账号是否符合格式.

            //思路:失去焦点之后判断.

            username.onblur = function(){

                var username123 = username.value;

                if (username123.length >=6 && username123.length<=10) {

                    tip1.innerText = "√";

                    tip1.style.color = "green";

                } else{

                    tip1.innerText = "X";

                    tip1.style.color = "red";

                }

            }

            

            password.onfocus = function(){

                tip2.innerText = "密码的长度要在6-10之间";

                tip2.style.color = "red";

            }

            

            //需求2:输入完成之后,要判断账号是否符合格式.

            //思路:失去焦点之后判断.

            password.onblur = function(){

                var password123 = password.value;

                if (password123.length >=6 && password123.length<=10) {

                    tip2.innerText = "√";

                    tip2.style.color = "green";

                } else{

                    tip2.innerText = "X";

                    tip2.style.color = "red";

                }

            }

            

            

            

            //onsubmit和其他的事件有个不同之处. 需要返回值的默认是return true表示提交 return false就表示不提交

            f.onsubmit = function(){

                

                if(tip1.innerText=="√" && tip2.innerText=="√" ){

                    return true;

                }else{

                    alert("请按照要求写");

                    return false;

                }

            }

            

            

        </script>

        

    </body>

15_下拉菜单事件

<body>

        <select id="a">

            <option>中国银行</option>

            <option>建设银行</option>

            <option>交通银行</option>

        </select>

        

        <select id="b">

            <option>中国银行卡号111</option>

            <option>建设银行卡号222</option>

            <option>交通银行卡号333</option>

        </select>

        

        <script>

            // onchange事件: 一般只会作用于下拉框 点击下拉框且改变值.

            //适用场景: 银行卡的互动. 地址栏的联动

            

            var a = document.getElementById("a");

            var b = document.getElementById("b");

            

            

            //需求实现两个下拉框的联动效果.

            //思路:给第一个下拉框加上一个onchange事件

            //思路:获取第一个下拉框的第几个元素(下标)

            //思路:将上一步的思路的下标 赋予给第二个下拉框即可

            a.οnchange= function(){

                // 如何获取下拉框的下标

                // console.log(a.selectedIndex);

                b.selectedIndex = a.selectedIndex;

            }

            

            b.οnchange= function(){

                // 如何获取下拉框的下标

                // console.log(a.selectedIndex);

                a.selectedIndex = b.selectedIndex;

            }

        </script>

        

        

    </body>

16_修改元素的属性

<body>

        <img src="img/1.PNG" />

        <button>替换图片</button>

        

        <script>

            //html元素是有很多属性的.

            //例如 id class name src href

            

            document.getElementsByTagName("button")[0].onclick = function(){

                //将xxx元素的aaa属性改成bbb

                //xxx.setAttribute("aaa","bbb");

                

                //var a = xxx.getAttribute("aaa");表示xxx的aaa属性的值

                

                // document.getElementsByTagName("img")[0].setAttribute("src","img/2.PNG");

                

                

                if(document.getElementsByTagName("img")[0].getAttribute("src") == "img/1.PNG" ){

                    document.getElementsByTagName("img")[0].setAttribute("src","img/2.PNG");

                }else{

                    document.getElementsByTagName("img")[0].setAttribute("src","img/1.PNG");

                }

                

                

            }

            

            

        </script>

    </body>

17_简化版的轮播图

   <style>

            img{

                width: 100px;

                height: 100px;

            }

        </style>

        

    </head>

    <body>

        <img src="img/1.PNG" />

        

        

        

        <script>

            //只要有需求: 每隔一段事件就要作什么事 就需要联想到使用定时器

            

            var img = document.getElementsByTagName("img")[0];

            //实现图片的替换 但是图片的文件名可能不是有规律.

            //所以可以将图片的所有文件名路径名 存到数组中. 数组是有规律的.

            var src_1 = ["img/1.PNG","img/2.PNG","img/3.PNG","img/4.PNG"];

            

            var index = 1;

            setInterval(function(){

                

                img.setAttribute("src",src_1[index]);

                index++;

                if(index==4){

                    index = 0;

                }

            },1000);

            

        </script>

        

    </body>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值