zoukankan      html  css  js  c++  java
  • js基础之BOM和DOM

    BOM

    window对象:全局浏览器对象。

    查看浏览器窗口的内部高度

    window.innerHeight

    查看浏览器窗口的内部宽度

    window.innerWidth

    打开新窗口

    window.open();

    关闭当前窗口

    window.close();

    window的子对象

      1、navigater对象,浏览器对象,包含了浏览器相关信息。

        web浏览器全称:

    navigator.appName

        web浏览器厂商和版本的详细字符串:

    navigator.appVersion

        客户端绝大部分信息:

    navigator.userAgent

        浏览器运行所在的操作系统:

    navigator.platform

      2、screen对象

        可用的屏幕宽度

    screen.availWidth

        可用的屏幕高度

    screen.availHeight

      3、history对象

        前进一个页面

    history.forward();

        后退一个页面

    history.back();

      4、location对象

        获取当前网址的url

    location.href;

        跳转到指定页面

    location.href='www.baidu.com';

          刷新当前页面

    location.reload();

    弹出窗

      可以在JavaScript中创建三种信息框:警告框、确认框、警示框。

      警告框:

    alert('欢迎你来到小米商城购物');

      确认框:

    confirm('你确定吗?');

      提示框:

    prompt('请在下方输入','你的答案');

    计时器相关(异步的)

       setTimeout()  一段时间后做一些事情。

        语法:var t = seTimeout('js语句',毫秒);    第一个参数js语句多数写一个函数,不然一般的is语句到这里就直接执行了,先用函数封装一下,返回值t其实就是一个id值(浏览器自动分配的。)。

    var t = setTimeout(function(){
    alert('欢迎你来购物');
    },4000);

        清除计时器:

    clearTimeout(t);

      setInterval()  每隔一段时间做某件事情:

    var t = setInterval(function(){
    alert('欢迎你来购物');
    },4000);

      清除计时器:

    clearInterval(t);

    DOM

    HTML DOM树

    DOM标准规定HTML文档中的每一个成分都是一个节点(node):

    • 文档节点(document对象):代表整个文档
    • 元素节点(element对象):代表每一个元素(标签)
    • 文本节点(text对象):代表元素(标签中的文本)
    • 属性节点(attribute对象):代表一个属性,元素(标签)才有属性
    • 注释是注释节点(comment对象)
    • JavaScript 可以通过DOM创建动态的HTML
    • JavaScript 能够改变页面中的所有HTML元素
    • JavaScript 能够改变页面中的所有HTML属性
    • JavaScript 能够改变页面中的所有css样式
    • JavaScript 能够对页面中的所有事件作出反应(鼠标点击事件,鼠标移动事件等...)

    查找标签(和css一样,你想要操作某个标签就需要先找到它)

      直接查找:

        根据id:获取一个标签。

    var a = document.getElementById('d1');

        根据类值:可以获取多个元素,所以返回的是一个数组。

    var b = document.getElementsByClassName('c1');

        根据标签名:获取标签合集。

    var c = document.getElementsByTagName('div');
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <div class="c1" id="d1">
        一首诗
    </div>
    <div class="c1" id="d2">
        两首诗
    </div>
    <div class="c1" id="d3">
    
    </div>
    
    </body>
    </html>
    View Code

      间接查找:通过直接查找找到标签后,可以通过该标签间接的查找这个标签相关的父标签子标签兄弟标签。

        找父节点标签元素:

    var a = document.getElementsByClassName('title');

        所有子标签:

    a[0].children;

        第一个子标签:

    a[0].firstElementChild;

        最后一个子标签:

    a[0].lastElementChild;

        下一个兄弟标签:

    a[0].nextElementSibling;

        上一个兄弟标签:

    a[0].previousElementSibling;

    节点操作:

      创建一个新节点,并将这个新节点添加到某个节点中去: 

    var a = document.createElement('a');    // 创建一个a标签
    a.innerText('baidu');                            //为a标签添加文本内容
    
    
    var dd = document.getElementById('d1');   //通过id值来找到添加的标签
    
    dd.appendChild(a);                            //将新创建的a标签添加到上面找到的标签的最后

      在某个节点前面添加节点:

    var a = document.createElement('p');
    p.innerText('一定要学好Django');
    
    
    var d1 = document.getElementById('d1');
    var d2 = d1.children[1];
    
    d1.insertBefore(p,d2);     // 父级标签.insertBefore(新创建的标签,某个儿子标签)
    
    

      删除节点:父级标签中删除子标签

    var d1 = document.getElementById('d1');
    var d2 = d1.children[1];
    d1.removeChild(d2);

      替换节点:

    var p = document.createElement('p');       //创建一个新的p标签
    p.innerText('一定要学好Django');               //为标签添加文本内容
    
    
    var d1 = document.getElementById('d1');   //找到父级标签
    
    
    var d2 = d1.children[1];      //   找到父级标签的某个要被替换的儿子标签
      
    d1.replaceChild(p,d2);   //   用新的p标签替换到原先的子标签

    文本操作:

      innerText:只是别字符串。

      innerHTML:能够识别标签。

    var nav =document.getElementById('nav');    找到标签
    nav.innerText 查看这个标签所有的标签和内部所有标签的文本内容
    nav.innerHTML nav.innerText =
    '<a href="">百度</a>'; 替换 nav.innerHTML = '<a href="">百度</a>'; 替换文本,能识别标签

    属性操作:

      attribute操作:

    var nav =document.getElementById('nav');   //获取标签
    
    nav.setAttribute('class','div1');   //为这个标签设置class属性,值为div1 
     
    nav.getAttribute('class');      // 查看这个标签的class属性的值
    nav.removeAttribute('class');   //移除这个标签的class属性

    自带的属性还可以直接 标签对象.属性名来获取和设置,如果是自定义的属性,则不能这么操作,比如a标签的href属性,img标签的src属性...

      值操作:用户输入的值,选择的一些内容,会产生一些数据的值。这些值也是可以操作的。

    <label for="username">用户名</label>
    <input type="text" id="username">
    input标签
    var inp = document.getElementById('username');     //获取input标签
    inp.value          //获取输入的值
    inp.value='zrg';      //设置值
        <select name="city" id="city">
            <option value="1">苏州</option>
            <option value="2">淮安</option>
            <option value="3">南通</option>
        </select>
    选择框
        var sel = document.getElementById('city');
        sel.value       //查看值
        sel.value = '2'   //设置值

    class操作:class本身也是属性。

    var div2 = document.getElementById('div2');   //  获取标签
    div2.classList;                  //  查看当前标签的class属性的所有的值
    div2.classList.add('dd2');            //为当前标签添加class值
    div2.classList                   //
    div2.classList.remove('dd2');        //以括号里的值来删除
    div2.classList.contains('dd2');       //判断是否有这个class值
    div2.classList.toggle('dd2');        //有就删除,没有就添加

    css操作:有横杠的css属性,写法要去掉横杠,并且横杠后面的单词首字母要大写。

    var div2 = document.getElementById('div2');
    div2.style.backgroundColor = 'red';
    div2.style.height = '400px';

    事件

    什么是事件?

      用户产生某些操作,被我们事件捕获到了,触发我们事件指定的一些操作。

    常用事件有哪些?:点击onclick

    如何绑定事件?

    1、把时间当属性写在标签里面

    <body>
    <div id="d1" class="c1" onclick="f1();"></div>      //绑定事件
    
    <script>
        function f1() {
            var d1 = document.getElementById('d1');
            d1.style.backgroundColor = 'yellow';
        }
    </script>
    </body>

    2、通过js代码找到标签。这种方法用的多。

    <div id="d1" class="c1"></div>
    
    <script>
        var d1 = document.getElementById('d1');
        d1.onclick = function () {                //绑定事件
            d1.style.backgroundColor = 'pink';
        }
    </script>

    事件里面this

    绑定方式一:

    如果想操作的动态变化的是你自己当前绑定事件的这个标签,可以简写,这个this就是当前绑定的这个标签。

    <div id="d1" class="c1" onclick="f1(this);"></div>      
    
    <script>
        function f1(ths) {
            ths.style.backgroundColor = 'yellow';
        }
    </script>

    操作自己让别的标签发生变化:

    <div id="d1" class="c1" onclick="f1(this);"></div>      
    <div id="d2" class="c2"></div>      
    
    <script>
        function f1(ths) {
            var d2 = document.getElementById('d2');
            d2.style.backgroundColor = 'yellow';
        }
    </script>

    绑定方式二:this表示当前绑定事件。

    <div id="d1" class="c1"></div>      
      
    <script>
        function f1() {
            this.style.backgroundColor = 'yellow';
        }
    </script>

    onfocus事件:获得光标

    <label for="username">用户名:</label>
    <input type="text" id="username">
    <div id="d1" class="c1"></div>
    
    <script>
        var inp = document.getElementById('username');
        inp.onfocus = function () {
            var d1 = document.getElementById('d1');
            d1.style.backgroundColor = 'pink';
        }
    </script>

    onblur失去光标时触发的事件:

    <label for="username">用户名:</label>
    <input type="text" id="username">
    <div id="d1" class="c1"></div>
    
    <script>
    
        var inp = document.getElementById('username');
        inp.onfocus = function () {
            var d1 = document.getElementById('d1');
            d1.style.backgroundColor = 'yellow';
    
        };
        inp.onblur = function () {
            var d1 = document.getElementById('d1');
            d1.style.backgroundColor = 'green';
        };
    </script>    

    onchange事件:域的内容改变。一般用在select标签里

    <select name="" id="programming language">
        <option value="1">c++</option>
        <option value="2">python</option>
        <option value="3">java</option>
        <option value="4">php</option>
    </select>
    
    <script>
        var selt = document.getElementById("programming language");
        selt.onchange = function () {
            // console.log(this.options)     //select标签的所有option标签
            // console.log(this.options[this.selectedIndex]);  //被选中标签在所有标签中的索引值
            console.log(this.options[this.selectedIndex].innerText + '年薪30万。'); 
    
        };
    
    </script> 

    onchang事件在input里的应用:

    <label for="username">用户名:</label>
    <input type="text" id="username">
    <div id="d1" class="c1"></div>
    <script>
        var inp = document.getElementById('username');
        inp.onchange = function () {
            console.log(this.value)
        }
    </script> 

    常用的事件:

  • 相关阅读:
    DBA常用脚本 二、性能监控
    ORA01012:not logged on的解决办法
    线性布局LinearLayout
    Android Handler.postDelayed()方法
    java String.valueOf()
    布局管理器ViewGroup
    UE3的数据绑定笔记
    概念、实现和沟通
    DirectX11的Shader Reflect的几个问题(2012222更新)
    测试livewriter
  • 原文地址:https://www.cnblogs.com/zhangrenguo/p/10177100.html
Copyright © 2011-2022 走看看