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

    前端基础之BOM和DOM

    前戏

      到目前为止,我们已经学过了JavaScript的一些简单的语法。但是这些简单的语法,并没有和浏览器有任何交互。

      也就是我们还不能制作一些我们经常看到的网页的一些交互,我们需要继续学习BOM和DOM相关知识。

      JavaScript分为 : ECMAScript,DOM,BOM。

      BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏览器进行“对话”。

      DOM (Document Object Model)是指文档对象模型,通过它,可以访问HTML文档的所有元素。

      Window对象是客户端JavaScript最高层对象之一,由于window对象是其它大部分对象的共同祖先,在调用window对象的方法和属性时,可以省略window对象的引用。例如:window.document.write()可以简写成:document.write()。

    BOM

    window对象


    | name直接封装到了window对象上,所有浏览器都支持 window 对象。它表示浏览器窗口。没有应用于 window 对象的公开标准,不过所有浏览器都支持该对象 |

    一些常用的Window方法:(在浏览器调试器的console里面输入下面这些属性或者方法,就能看到对应的效果)
    window.innerHeight - 浏览器窗口的内部高度
    window.innerWidth - 浏览器窗口的内部宽度
    window.open() - 打开新窗口
    window.close() - 关闭当前窗口 (只能关闭用js的window.open()打开的页面,了解一下就行了)
    

    window的子对象

    navigator.appName  // Web浏览器全称
    navigator.appVersion  // Web浏览器厂商和版本的详细字符串
    navigator.userAgent  // 客户端绝大部分信息
    navigator.platform   // 浏览器运行所在的操作系统
    

    screen对象

     screen.availWidth - 可用的屏幕宽度
     screen.availHeight - 可用的屏幕高度
    

    history对象

    history.forward()  // 前进一页,其实也是window的属性,window.history.forward()
    history.back()  // 后退一页
    

    弹出框

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

    alert("你看到了吗?");
    confirm("你确定吗?")
    prompt("请在下方输入","你的答案")
    

    location对象

    location.href  获取URL
    location.href="URL" // 跳转到指定页面
    实例:location.href='http://www.baidu.com';
    location.reload() 重新加载页面,就是刷新一下页面
    

    计时器相关

    setTimeout()
        var t=setTimeout("JS语句",毫秒)	#一段时间之后做某些事  第一个参数js语句多数是写一个函数,不然一般的js语句到这里就直接执行了,先用函数封装一下,返回值t其实就是一个id值(浏览器给你自动分配的)
        var t=setTimeout("confirm('你好')",3000);
    
    
    clearTimeout()
        clearTimeout(setTimeout_variable)
        // 在指定时间之后执行一次相应函数
        var timer = setTimeout(function(){alert(123);}, 3000)
        // 取消setTimeout设置
        clearTimeout(timer);
    
    
    setInterval("JS语句",时间间隔)  #每隔一段时间做一些事情
    	// 每隔一段时间就执行一次相应函数
        var timer = setInterval(function(){console.log(123);}, 3000)
        // 取消setInterval设置
        clearInterval(timer);
    

    DOM

    选择器

    直接查找

    document.getElementById           根据ID获取一个标签
    document.getElementsByClassName   根据class属性获取(可以获取多个元素,所以返回的是一个数组)
    document.getElementsByTagName     根据标签名获取标签合集
    示例:
    	<div class="c1" id="d1">
        	待到将军归来日,朕与将军解战袍!
    	</div>
    
    	<div class="c1" id="d2">
        	日照香炉生紫烟,遥看瀑布挂前川!
    	</div>
    	
    	var a = document.getElementById('d1');  # 获取id属性值为d1的标签  拿到的直接是标签对象
    	var a = document.getElementsByClassName('c1'); #获取class值为c1的所有标签  拿到的是数组
    	var a = document.getElementsByTagName('div');  #获取所有div标签  拿到的是数组
    	
    	
    

    间接查找

    var a = document.getElementById('d1');
    a.parentElement; #获取a这个标签的父级标签.
    children                 所有子标签
    firstElementChild        第一个子标签元素
    lastElementChild         最后一个子标签元素
    nextElementSibling       下一个兄弟标签元素
    previousElementSibling   上一个兄弟标签元素
    
    
    

    节点操作

    创建节点(创建标签) 
    	var a = document.createElement('标签名称'); 
    	示例,创建a标签
    		var a = document.createElement('a');
    	var dd = document.getElementById('dd'); 找到div标签
    	
    添加节点
    	#添加节点,添加到了最后
        父级标签.appchild(要添加节点)
    	dd.appendChild(a);将创建的a标签添加到dd这个div标签里面的最后.
    
    	#在某个节点前面添加节点
    	父级标签.insertBefore(新标签,某个儿子标签)
    	示例
    		var dd = document.getElementById('dd');  #找到父级标签
    		var a = document.createElement('a');   #创建一个新的a标签
    		var d2 = dd.children[1];  #找到父级标签下的某个儿子标签
    		dd.insertBefore(a,d2);   #将a标签插入到上面这个儿子标签的前面.
    删除节点
    	dd.removeChild(d2);  父级标签中删除子标签
            
    替换节点
    	var dd = document.getElementById('dd');  #找到父级标签
    	var a = document.createElement('a');  #创建a标签
    	a.innerText = '百度';  
    	var d1 = dd.children[0];  #找到要被替换的子标签
    	dd.replaceChild(a,d1);  #替换
        
    
    

    文本操作

    d1.innerText; 查看
    
    var divEle = document.getElementById("d1")
    divEle.innerText  #输入这个指令,一执行就能获取该标签和内部所有标签的文本内容
    divEle.innerHTML  #获取的是该标签内的所有内容,包括文本和标签
    
    设置:
    	d1.innerText = "<a href=''>百度</a>";  
    	d1.innerHTML = "<a href=''>百度</a>";  能够识别标签
    
    

    属性操作

    var divEle = document.getElementById("d1");
    divEle.setAttribute("age","18")  #比较规范的写法
    divEle.getAttribute("age")
    divEle.removeAttribute("age")
    
    // 自带的属性还可以直接.属性名来获取和设置,如果是你自定义的属性,是不能通过.来获取属性值的
    imgEle.src
    imgEle.src="..."
    
    

    值操作

    var inp = document.getElementById('username');
    inp.value;  #查看值
    inp.value = 'taibai'; #设置值
    
    选择框:
    	<select name="city" id="city">
            <option value="1">上海</option>
            <option value="2">北京</option>
            <option value="3">深圳</option>
        </select>
    	select标签.value
    	select标签.value=option标签的value属性值   这个标签就被选中了
    	
    	
    	
    	var inp = document.getElementById('city');
    	inp.value;  #查看值
    	inp.value = '1';  #设置值
    	
    
    

    class的操作

    var d = document.getElementById('oo'); 
    d.classList;  #获得这个标签的class属性的所有的值
    d.classList.add('xx2');  #添加class值
    d.classList.remove('xx2'); #删除class值
    d.classList.contains('xx2');  #判断是否有某个class值,有返回true,没有返回false
    d.classList.toggle('xx2');  #有就删除,没有就增加
    
    

    css操作

    var d = document.getElementById('oo');
    d.style.backgroundColor = 'deeppink';  有横杠的css属性,写法要去掉横杠,并且横杠后面的单词首字母大写
    d.style.height = '1000px'
    
    

    事件

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

    绑定事件的方式有两种

    方式1:

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

    方式2

    	<div id="d1" class="c1"></div>
    
        var d = document.getElementById('d1');
        d.onclick = function () {
            d.style.backgroundColor = 'yellow';
        }
    
    
    

    事件里面的this

    绑定方式1:

    this表示当前标签对象
    <div id="d1" class="c1" onclick="f1(this);"></div>
    function f1(ths) {
            // var d = document.getElementById('d1');
            // d.style.backgroundColor = 'yellow';
            ths.style.backgroundColor = 'yellow';
    
            var d = document.getElementById('d2');
            d.style.backgroundColor = 'yellow';
        }
    
    

    方式2:

        <div id="d1" class="c1"></div>
        
        var d = document.getElementById('d1');
        d.onclick = function () {
            this.style.backgroundColor = 'yellow';
            // d.style.backgroundColor = 'yellow'; //this表示当前标签对象
        }
    
    
    

    onblur和onfocus事件

     var inp = document.getElementById('username');
        inp.onfocus = function () {
            var d = document.getElementById('d1');
            d.style.backgroundColor = 'pink';
        };
        // onblur 失去光标时触发的事件
    
        inp.onblur = function () {
            var d = document.getElementById('d1');
            d.style.backgroundColor = 'green';
        };
    
    

    onchange事件,域内容发生变化时触发

    <select name="" id="jishi">
        <option value="1">太白</option>
        <option value="2">alex</option>
        <option value="3">沛齐</option>
    
    </select>
    
    // onchange事件,内容发生变化时触发的事件
        var s = document.getElementById('jishi');
        s.onchange = function () {
        	//this.options  select标签的所有的option标签
        	//this.selectedIndex被选中的标签在所有标签中的索引值
            console.log(this.options[this.selectedIndex].innerText + '搓的舒服');
        }
        
        
    用户名:<input type="text" id="username">    
    
        //input标签绑定onchange事件
        var inp = document.getElementById('username');
        inp.onchange = function () {
            console.log(this.value);  
        };    
    
    
  • 相关阅读:
    [转]IUnkown生命周期管理
    [转] com 基本数据类型
    Centos 7 修改开机等待时间 Alex
    乌班图的安装常用命令 Alex
    Ubuntu切换root用户 Alex
    乌班图开启关闭防火墙 Alex
    Ubuntu远程root用户登录 Alex
    Centos 8 更改为阿里云源 Alex
    LVS调度之搭建NAT模型实现 Alex
    解决挂载mount: wrong fs type, bad option, bad superblock on Alex
  • 原文地址:https://www.cnblogs.com/an-wen/p/11166842.html
Copyright © 2011-2022 走看看