zoukankan      html  css  js  c++  java
  • CSIC_716_20191230【前端的BOM与DOM】

    BOM 浏览器对象模型(Browser Object Model)

    window对象

    可以让js与浏览器对话,主要是window对象

    window.open()、window.close()

    window.innerHeight浏览器窗口的内部高度

    window.innerWidth浏览器窗口的内部宽度

    通过代码打开一个浏览器,设置浏览器的大小以及在屏幕上所处的位置,代码如下

    window.open('http://www.baidu.com', ' ' ,'height=400px, width=400px,left = 300px,right=300px')
    window.close()

    window.navigator对象

    navigator.userAgent 获取浏览器的属性,从而判断是否是一个浏览器

    window.location对象

    location.href获取当前页面的地址

    location.href = '想要跳转的地址'

    location.reload( )     重新加载当前页面

    警告框、确认框、提示框

     

    警告框

    确认框

    提示框

     

    BOM的计时事件

    可以让js中的代码暂停一段时间后再执行

    语句:

    setTimeout(' 待执行的语句',毫秒) 

     也可以给setTimeout赋值,以便于重复调用。然后通过clearTimeout,清除变量的值,如下:。

    timer =let  setTimeout
    clearTimeout(timer)
    

      

    上述的定时只能通过重复调用,下面的方法可以实现按周期自动调用

    let timer = setInterval(函数对象,间隔时间以毫秒计)
    clearInterval(timer)
    

     

     

    DOM文档对象模型(Document Object Model)

    当网页被加载时,浏览器会创建页面的文档对象模型。

    HTML的DOM树,几个概念:

    Document代表整个文档,在下面各个方法对DOM树增删改查调用之前,都要加上document.XXXX。

    元素即标签,文本就是标签中夹的文本,属性是标签尖括号中的属性,在html的DOM树中,都以节点形式展现。

    为避免出现不必要的报错,JavaScript代码要统一写在HTML文档的最后面,即写在<body>标签的后面。

    查找标签

    JavaScript直接查找标签的方法:

    通过标签名查找:getElementsByTagName()[0];通过标签中的class属性查找:getElementsByClassName()[0]、通过标签的id查找:getElementById()

    JavaScript间接查找标签的方法:

    parentElement、Children、firstElementChild、lastElementChild、nextElementSibling、previousElementSibling.

    注意观察实例,体会上面六个间接方法的作用。

    对DOM树的节点操作

    创建节点、添加属性:

    document.createElement(标签名字)

    setAttribute(' 自定义属性的名字 ',' 自定义属性的值 ')

    插入、删除、替换

     总结: 插入、删除、替换,都要先找到父节点,通过父节点调用 insertBefore(插入的标签,参照物标签)removeChild(节点)replaceChild(新的标签,老的标签)。

    innerText和innerHTML的区别:

    注意,对上面innerText和innerHTML进行赋值的时候,如果赋值的内容中有标签,innerText不能识别,会当普通文本处理,而innerHTML可以识别标签。

    获取用户输入的值(input、select、textarea),对这三类的取值统一使用   节点.value

    对于有文件的输入的情况,节点.value只能获得文件的路径,要通过    节点.files[0] 取值

    查看一个节点的类属性,可以通过   节点.classList获取 ,这里所说的节点,其实就是通过documen.getElementByXXX的方式取出来的js对象。

    divEle.classList.remove(' c1')   // 删除类属性c1
    divEle.classList.contains(' c1 ')  //是否存在c1类属性
    
    divEle.classList.toggle('c2') // divEle中如果有类属性c2,删除之;divEle中如果没有类属性c2,增加之。
    

     toggle的英文意思:拨动。    

    divEle.classList.toggle('c2')   重要!!!

     

    JavaScript也可以对CSS的样式进行修改,但都需要先获得节点,然后通过   节点.style.XXX    来操作CSS。

    规律:对于CSS中没有-的属性,直接在XXX处写属性名即可;对于CSS中有-的属性,例如font-family,直接变成驼峰体   节点.style.fontFamily即可。

    事件

    标签绑定事件的两种方式,一种行内式在标签内直接写事件名以及事件所关联的函数名。另一种js动态绑定,在script中通过找到对应的节点,通过节点绑定事件。

    常用的事件如下:

    onclick        当用户点击某个对象时调用的事件句柄。
    ondblclick     当用户双击某个对象时调用的事件句柄。
    
    onfocus        元素获得焦点。               // 练习:输入框
    onblur         元素失去焦点。               应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证.
    onchange       域的内容被改变。             应用场景:通常用于表单元素,当元素内容被改变时触发.(select联动)
    
    onkeydown      某个键盘按键被按下。          应用场景: 当用户在最后一个输入框按下回车按键时,表单提交.
    onkeypress     某个键盘按键被按下并松开。
    onkeyup        某个键盘按键被松开。
    onload         一张页面或一幅图像完成加载。
    onmousedown    鼠标按钮被按下。
    onmousemove    鼠标被移动。
    onmouseout     鼠标从某元素移开。
    onmouseover    鼠标移到某元素之上。
    
    onselect      在文本框中的文本被选中时发生。
    onsubmit      确认按钮被点击,使用的对象是form。
    

     在事件函数内部有一个自带的变量this,他代表调用这个函数的对象。

    作业:

    1、开关灯示例

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>开关灯示例</title>
     6     <style>
     7         .c1 {
     8             height: 400px;
     9             width: 400px;
    10             border-radius: 50%;
    11         }
    12         .bg_green {
    13             background-color: green;
    14         }
    15         .bg_red {
    16             background-color: red;
    17         }
    18     </style>
    19 </head>
    20 <body>
    21 <div class="c1 bg_green bg_red"></div>
    22 <button id="d1">点我变色</button>
    23 
    24 <script>
    25     var btnEle = document.getElementById('d1');
    26     var divEle = document.getElementsByClassName('c1')[0];
    27     btnEle.onclick = function () {
    28         // console.log(this)  // 指代的是当前被操作对象本身
    29         divEle.classList.toggle('bg_red')
    30     }
    31 </script>
    32 </body>
    33 </html>
    开关灯,颜色切换

    2、动态展示时间

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8 <input type="text" id="d1">
     9 <button id="b1">开始</button>
    10 <button id="b2">结束</button>
    11 
    12 
    13 <script>
    14     var ipEle = document.getElementById('d1');
    15     var btn1Ele = document.getElementById('b1');
    16     var btn2Ele = document.getElementById('b2');
    17     // 先定义一个变量用来存储定时器
    18     var t = null;
    19     function showTime() {
    20         var currentTimeXXX = new Date();
    21         ipEle.value =  currentTimeXXX.toLocaleString();  // 转换成当地时间
    22     }
    23 
    24     // 开始按钮绑定事件
    25     btn1Ele.onclick = function () {
    26         if(!t){
    27              t = setInterval(showTime,1000);  // 每隔一秒钟执行一次
    28         }
    29 
    30     };
    31     // 结束按钮绑定事件
    32     btn2Ele.onclick = function () {
    33         clearInterval(t);  // 取消定时器
    34         // 还需要手动将t置位null
    35         t = null;
    36     }
    37 
    38 </script>
    39 </body>
    40 </html>
    动态展示时间

    3、省市联动

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8 <select name="" id="province"></select>
     9 
    10 
    11 <select name="" id="city"></select>
    12 
    13 <script>
    14     data = {
    15         "河北": ["廊坊", "邯郸"],
    16         "北京": ["朝阳区", "海淀区"],
    17         "山东": ["威海市", "烟台市"],
    18         '上海': ['徐汇区','黄埔区'],
    19         '深圳': ['保安区','南山区']
    20     };
    21     let proEle = document.getElementById('province');
    22     let cityEle = document.getElementById('city');
    23     // 先获取一个个的省份信息
    24     for(let i in data){
    25         // 由于select标签中 一个个的选项就是一个个的option标签 所以我们需要自己手动创建该标签
    26         // 先创建一个option标签
    27         let opEle = document.createElement('option');
    28         // 给标签设置value属性
    29         opEle.value = i;
    30         // 给标签设置内部文本
    31         opEle.innerText = i;
    32         // 将创建好的option标签添加到select框中
    33         proEle.appendChild(opEle)
    34     }
    35     proEle.onchange = function () {  // 文本域改变自动触发
    36         // 先将第二个select框内容清空 再做添加操作
    37         cityEle.innerHTML = '';
    38 
    39         let currentPro = this.value;
    40         // 根据用户点击的省获取对应的市信息
    41         let currentCity = data[currentPro];
    42         // for循环市信息 动态创建option标签 一个个放入第二个select框中
    43         for(let i=0;i<currentCity.length;i++){
    44             let opEle = document.createElement('option');
    45             opEle.value = currentCity[i];
    46             opEle.innerText = currentCity[i];
    47             // 将创建好的option标签放入第二个select框中
    48             cityEle.appendChild(opEle)
    49         }
    50     }
    51 
    52 </script>
    53 </body>
    54 </html>
    省市联动(文本域改变事件)
  • 相关阅读:
    PyCharm 的安装与入门操作
    第一个 Python 程序
    ubuntu中使用apt命令安装ipython失败解决方案
    MOS管学习笔记
    arm-none-linux-gnueabi-gcc No such file or directory这个错误的解决方法
    Taglist: Exuberant ctags (http://ctags.sf.net) not found in PATH. Plugin is not loaded.
    linux 下chown改变隐藏文件夹
    busybox编译 fatal error: curses.h: 没有那个文件或目录解决办法
    mount加载虚拟机增强工具步骤
    命令行终端快捷键
  • 原文地址:https://www.cnblogs.com/csic716/p/12120343.html
Copyright © 2011-2022 走看看