zoukankan      html  css  js  c++  java
  • javascript的BOM,DOM对象

    BOM对象

    window对象

    所有浏览器都支持 window 对象。
    概念上讲.一个html文档对应一个window对象.
    功能上讲: 控制浏览器窗口的.
    使用上讲: window对象不需要创建对象,直接使用即可.

    Window 对象方法

    alert()            显示带有一段消息和一个确认按钮的警告框。
    confirm()          显示带有一段消息以及确认按钮和取消按钮的对话框。
    prompt()           显示可提示用户输入的对话框。
    
    open()             打开一个新的浏览器窗口或查找一个已命名的窗口。
    close()            关闭浏览器窗口。
    setInterval() 按照指定的周期(以毫秒计)来调用函数或计算表达式。 clearInterval() 取消由 setInterval() 设置的 timeout。 setTimeout() 在指定的毫秒数后调用函数或计算表达式。 clearTimeout() 取消由 setTimeout() 方法设置的 timeout。 scrollTo() 把内容滚动到指定的坐标。

    方法使用

    1、alert confirm prompt以及open函数

    //----------alert confirm prompt----------------------------
        //alert('aaa');
        
        
        /* var result = confirm("您确定要删除吗?");
        alert(result); */
    
        //prompt 参数1 : 提示信息.   参数2:输入框的默认值. 返回值是用户输入的内容.
    
        // var result = prompt("请输入一个数字!","haha");
        // alert(result);
    
    
        方法讲解:    
            //open方法 打开和一个新的窗口 并 进入指定网址.参数1 : 网址.
            //调用方式1
                //open("http://www.baidu.com");
            //参数1 什么都不填 就是打开一个新窗口.  参数2.填入新窗口的名字(一般可以不填). 参数3: 新打开窗口的参数.
                open('','','width=200,resizable=no,height=100'); // 新打开一个宽为200 高为100的窗口
            //close方法  将当前文档窗口关闭.
                //close();
    View Code

    示例:

    var num = Math.round(Math.random()*100);
        function acceptInput(){
        //2.让用户输入(prompt)    并接受 用户输入结果
        var userNum = prompt("请输入一个0~100之间的数字!","0");
        //3.将用户输入的值与 随机数进行比较
                if(isNaN(+userNum)){
                    //用户输入的无效(重复2,3步骤)
                    alert("请输入有效数字!");
                    acceptInput();
                }
                else if(userNum > num){
                //大了==> 提示用户大了,让用户重新输入(重复2,3步骤)
                    alert("您输入的大了!");
                    acceptInput();
                }else if(userNum < num){
                //小了==> 提示用户小了,让用户重新输入(重复2,3步骤)
                    alert("您输入的小了!");
                    acceptInput();
                }else{
                //答对了==>提示用户答对了 , 询问用户是否继续游戏(confirm).
                    var result = confirm("恭喜您!答对了,是否继续游戏?");
                    if(result){
                        //是 ==> 重复123步骤.
                        num = Math.round(Math.random()*100);
                        acceptInput();
                    }else{
                        //否==> 关闭窗口(close方法).
                        close();
                    }
                }
        }
    View Code

    2、setInterval,clearInterval

    setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。

    语法:<br>     setInterval(code,millisec)

    其中,code为要调用的函数或要执行的代码串。millisec周期性执行或调用 code 之间的时间间隔,以毫秒计。

    示例:

    <input id="ID1" type="text" onclick="begin()">
    <button onclick="end()">停止</button>
    
    <script>
        function showTime(){
               var nowd2=new Date().toLocaleString();
               var temp=document.getElementById("ID1");
               temp.value=nowd2;
    
        }
        var ID;
        function begin(){
            if (ID==undefined){
                 showTime();
                 ID=setInterval(showTime,1000);
            }
        }
        function end(){
            clearInterval(ID);
            ID=undefined;
    
    
        }
    
    </script>
    View Code

    DOM对象

    什么是HTML  DOM

    •     HTML  Document Object Model(文档对象模型)
    •     HTML DOM 定义了访问和操作HTML文档的标准方法
    •     HTML DOM 把 HTML 文档呈现为带有元素、属性和文本的树结构(节点树)

    DOM树

                  

     画dom树是为了展示文档中各个对象之间的关系,用于对象的导航。

    DOM节点

    节点类型

    HTML 文档中的每个成分都是一个节点。

    DOM 是这样规定的:
        整个文档是一个文档节点 
        每个 HTML 标签是一个元素节点 
        包含在 HTML 元素中的文本是文本节点 
        每一个 HTML 属性是一个属性节点

    其中,document与element节点是重点。

    节点关系

    节点树中的节点彼此拥有层级关系。
    父(parent),子(child)和同胞(sibling)等术语用于描述这些关系。父节点拥有子节点。同级的子节点被称为同胞(兄弟或姐妹)。

    •     在节点树中,顶端节点被称为根(root)
    •     每个节点都有父节点、除了根(它没有父节点)
    •     一个节点可拥有任意数量的子
    •     同胞是拥有相同父节点的节点

    下面的图片展示了节点树的一部分,以及节点之间的关系:



    访问 HTML 元素(节点),访问 HTML 元素等同于访问节点,我们能够以不同的方式来访问 HTML 元素。

    节点查找

    直接查找节点

    1
    2
    3
    4
    document.getElementById(“idname”)
    document.getElementsByTagName(“tagname”)
    document.getElementsByName(“name”)
    document.getElementsByClassName(“name”)
     局部查找

    注意:设计到寻找元素,注意<script>标签的位置!

    导航节点属性

    '''
    parentElement // 父节点标签元素
    children // 所有子标签
    firstElementChild // 第一个子标签元素
    lastElementChild // 最后一个子标签元素
    nextElementtSibling // 下一个兄弟标签元素
    previousElementSibling // 上一个兄弟标签元素 '''

    注意,js中没有办法找到所有的兄弟标签!

    节点操作

    创建节点:

    1
    createElement(标签名) :创建一个指定名称的元素。

    例:var  tag=document.createElement(“input")
                tag.setAttribute('type','text');

    添加节点:

    1
    2
    3
    4
    5
    追加一个子节点(作为最后的子节点)
    somenode.appendChild(newnode)
     
    把增加的节点放到某个节点的前边
    somenode.insertBefore(newnode,某个节点);

    删除节点:

    1
    removeChild():获得要删除的元素,通过父元素调用删除

    替换节点:

    1
    somenode.replaceChild(newnode, 某个节点);

    节点属性操作:

    1、获取文本节点的值:innerText    innerHTML

    2、attribute操作

         elementNode.setAttribute(name,value)    
    
         elementNode.getAttribute(属性名)        <-------------->elementNode.属性名(DHTML)
    
         elementNode.removeAttribute(“属性名”);

    3、value获取当前选中的value值
            1.input   
            2.select (selectedIndex)
            3.textarea  
    4、innerHTML 给节点添加html代码:
            该方法不是w3c的标准,但是主流浏览器支持    
            tag.innerHTML = “<p>要显示内容</p>”;

    5、关于class的操作:

    1
    2
    3
    elementNode.className
    elementNode.classList.add
    elementNode.classList.remove

     6、改变css样式:

    1
    2
    3
    <p id="p2">Hello world!</p>
    document.getElementById("p2").style.color="blue";
                                 .style.fontSize=48px

    DOM Event(事件)

    事件类型

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

    绑定事件方式

    方式1:

    <div id="div" onclick="foo(this)">点我呀</div>
    
    <script>
        function foo(self){           // 形参不能是this;
            console.log("点你大爷!");
            console.log(self);   
        }
    </script>

    方式2:

    <p id="abc">试一试!</p>
    
    <script>
    
        var ele=document.getElementById("abc");
    
        ele.onclick=function(){
            console.log("ok");
            console.log(this);    // this直接用
        };
    
    </script>
       

    事件介绍

    1、onload:

    onload 属性开发中 只给 body元素加.这个属性的触发 标志着 页面内容被加载完成.应用场景: 当有些事情我们希望页面加载完立刻执行,那么可以使用该事件属性.

    2、onsubmit:

    当表单在提交时触发. 该属性也只能给form元素使用.应用场景: 在表单提交前验证用户输入是否正确.如果验证失败.在该方法中我们应该阻止表单的提交.

    3、事件传播:                                             
    <div id="abc_1" style="border:1px solid red;300px;height:300px;">
            <div id="abc_2" style="border:1px solid red;200px;height:200px;">
    
            </div>
    </div>
    
    <script type="text/javascript">
            document.getElementById("abc_1").onclick=function(){
                alert('111');
            };
            document.getElementById("abc_2").onclick=function(event){
                alert('222');
                event.stopPropagation(); //阻止事件向外层div传播.
            }
    </script>
    复制代码
    <div id="abc_1" style="border:1px solid red;300px;height:300px;">
            <div id="abc_2" style="border:1px solid red;200px;height:200px;">
    
            </div>
    </div>
    
    <script type="text/javascript">
            document.getElementById("abc_1").onclick=function(){
                alert('111');
            };
            document.getElementById("abc_2").onclick=function(event){
                alert('222');
                event.stopPropagation(); //阻止事件向外层div传播.
            }
    </script>
    复制代码

    4、onselect:

    <input type="text">
    
    <script>
        var ele=document.getElementsByTagName("input")[0];
    
        ele.onselect=function(){
              alert(123);
        }
    
    </script>

    5、onchange:

    <select name="" id="">
        <option value="">111</option>
        <option value="">222</option>
        <option value="">333</option>
    </select>
    
    <script>
        var ele=document.getElementsByTagName("select")[0];
    
        ele.onchange=function(){
              alert(123);
        }
    
    </script>
    复制代码
    <select name="" id="">
        <option value="">111</option>
        <option value="">222</option>
        <option value="">333</option>
    </select>
    
    <script>
        var ele=document.getElementsByTagName("select")[0];
    
        ele.onchange=function(){
              alert(123);
        }
    
    </script>
    复制代码

    6、onkeydown:

    Event 对象:Event 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。
    事件通常与函数结合使用,函数不会在事件发生前被执行!event对象在事件发生时系统已经创建好了,并且会在事件函数被调用时传给事件函数.我们获得仅仅需要接收一下即可.比如onkeydown,我们想知道哪个键被按下了,需要问下event对象的属性,这里就时KeyCode.

    <input type="text" id="t1"/>
    
    <script type="text/javascript">
    
        var ele=document.getElementById("t1");
    
        ele.onkeydown=function(e){
    
            e=e||window.event;
    
            var keynum=e.keyCode;
            var keychar=String.fromCharCode(keynum);
    
            alert(keynum+'----->'+keychar);
    
        };
    
    </script>
    复制代码
    <input type="text" id="t1"/>
    
    <script type="text/javascript">
    
        var ele=document.getElementById("t1");
    
        ele.onkeydown=function(e){
    
            e=e||window.event;
    
            var keynum=e.keyCode;
            var keychar=String.fromCharCode(keynum);
    
            alert(keynum+'----->'+keychar);
    
        };
    
    </script>
    复制代码

    7、onmouseout与onmouseleave事件的区别:

    onmouseout事件是指当鼠标移开其子标签的时候就会触发事件;

    onmouseleave事件是指当鼠标只有移开其添加事件的那个标签时才会触发事件

  • 相关阅读:
    linux 命令终端提示符显示-bash-4.1#解决方法
    实践过配置成功的VNC安装配置
    技术团队新官上任之中层篇
    技术团队新官上任之基层篇
    代码可维护性的神秘面纱
    程序员,如何在工作中崭露头角?
    centos 安装git
    防火墙 -- centos7默认的firewalld
    防火墙 --Ubuntu的ufw工具
    golang的跨平台编译
  • 原文地址:https://www.cnblogs.com/wxp5257/p/7652382.html
Copyright © 2011-2022 走看看