JavaScript DOM模型 及 get.. 方法

3 篇文章 0 订阅

JavaScript DOM模型 及 get... 方法 

1、DOM模型

2、createElement 方法

3、document 对象三个查询方法的使用注意事项

4、getElementById 方法

5、getElementsByName 方法

6、getElementsByTagName 方法

7、节点的常用属性和方法


1、DOM模型

DOM 的全称是 Document Object Model 文档对象模型
    ==>就是把文档中的标签,属性,文本,转化成为对象来管理。

    1、Document 对象
         Document 对象的理解:
            1、Document 它管理了所有Html文档内容。
            2、document 它是一种数结构的文档。有层级关系。
            3、它让我们把所有的标签 都 对象化
            4、我们可以通过document 访问所有的标签对象

2、createElement 方法

 <script type="text/javascript">
        window.onload =  function () {
            // 现在让我们使用js代码来创建html标签,并显示在页面上
            // 标签的内容就是:<div>this is my major</div>
            var divObj = document.createElement("div"); //在内存中<div></div>

            var textObj = document.createTextNode("Java、PHP、C#"); //有一个文本节点对象 #Java、PHP、C#
            divObj.appendChild(textObj);
            //divObj.innerHTML = "this is my major";  //<div>this is my major</div>,还只是在内存中
            //添加子元素
            document.body.appendChild(divObj);  //document.body 要在页面加载完成使用
        }
    </script>

 

 


3、document 对象三个查询方法的使用注意事项

 

document 对象的三个查询方法,如果有 id属性,优先使用getEleMENTById方法来进行查询
* 如果没有id 属性,则优先使用getElementsByName 方法来进行查询
* 如果id 属性和 name 属性都没有最后再按标签名查 getElementsByTagName
*
* 以上三个方法,一定要在页面加载完成之后执行,才能查询到标签对象
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>

    <script type="text/javascript">
        /***
         * document 对象的三个查询方法,如果有 id属性,优先使用getEleMENTById方法来进行查询
         * 如果没有id 属性,则优先使用getElementsByName 方法来进行查询
         * 如果id 属性和 name 属性都没有最后再按标签名查 getElementsByTagName
         *
         * 以上三个方法,一定要在页面加载完成之后执行,才能查询到标签对象
          */
        alert(document.getElementById("btn01"))
        function checkAll() {
            alert(document.getElementById("btn01"))
            // document.getElementsByTagName("input"); 是按照指定标签名来进行查询并返回集合
            // 这个集合的操作跟数组 一样
            // 集合中都是dom对象
            // 集合中元素顺序,是它们在html页面中从上到下的顺序
            var inputs = document.getElementsByTagName("input");
            for(var i=0;i<inputs.length;i++){
                inputs[i].checked = true;
            }
        }
    </script>
</head>
<body>
    兴趣爱好:
    <input type="checkbox" value="PHP" checked="checked">PHP
    <input type="checkbox" value="Java">Java
    <input type="checkbox" value="C++">C++
    <input type="checkbox" value="Python">Python
    <br>
    <button id="btn01" onclick="checkAll()">全选</button>
</body>
</html>

 

 


4、getElementById 方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        /**
         * 需求:当用户点击了校验按钮,要获取输入框里的内容。
         * 然后验证其是否合法
         * 验证规则是:必须由字母,数字,下划线组成,并且长度是5到12位
         */
        function onclickFun() {
            //1、当我们要操作一个标签的时候,一定要先获取这个标签对象
            var name = document.getElementById("username")
            //[object HTMLInputElement] 它就是dom对象
            //alert(name.value);  //获取输入框的内容
            var usernameTest = name.value;  //获取输入框的内容
            //如何验证 字符串 符合某个规则,需要使用正则表达式
            var patt = /^\w{5,12}$/;
            /***
             * test() 方法用于测试某个字符串,是不是匹配我的规则
             * 匹配就返回 true,不匹配就返回 false
             */
            var spanObj = document.getElementById("span");
            //innerHTML 表示起始标签和结束标签中的内容
            //innerHTML 这个属性可读,可写。可赋值
            //alert(spanObj.innerHTML);

            if(patt.test(usernameTest)){
                //alert("用户名合法!!");
                //spanObj.innerHTML = "用户名合法!!";
                spanObj.innerHTML = "<img src=\"../../imgs/true.jpg\" width=\"25\" height=\"25\">";
            }else{
                //alert("用户名不合法!!");
                //spanObj.innerHTML = "用户名不合法!!";
                spanObj.innerHTML = "<img src=\"../../imgs/false.jpg\" width=\"25\" height=\"25\">";
            }
        }
    </script>
</head>
<body>
    用户名: <input type="text" id="username" value="wzx">
    <span style="color: red" id="span">

    </span>
    <button onclick="onclickFun()">校验</button>
</body>
</html>

 


5、getElementsByName 方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        //全选 方法
        function checkAll() {
            // 让所有复选框都选中
            // document.getElementsByName(); 是根据 指定的name属性查询返回多个标签对象集合
            // 这个集合的操作跟数组一样
            // 集合中每个元素都是dom对象
            //  这个集合中的元素顺序是它们在html页面中从上到下的顺序
            var hobbies = document.getElementsByName("hobby");
            // alert(hobbies[2].value);
            // checked 表示复选框的选中状态,如果选中是true,不选中是false
            // checked 这个属性可读,可写
            for(var i=0;i<hobbies.length;i++){
                hobbies[i].checked = true;
            }

        }
        //全不选 方法
        function checkNo() {
            var hobbies = document.getElementsByName("hobby");
            for(var i=0;i<hobbies.length;i++){
                hobbies[i].checked = false;
            }
        }
        //反选 方法
        function checkReverse() {
            var hobbies = document.getElementsByName("hobby");

            for(var i=0;i<hobbies.length;i++){
                hobbies[i].checked  = !hobbies[i].checked;

                // if(hobbies[i].checked){
                //     hobbies[i].checked  = false;
                // }else{
                //     hobbies[i].checked = true;
                // }
            }
        }
    </script>
</head>
<body>
    兴趣爱好:
    <input type="checkbox" name="hobby" value="PHP" checked="checked">PHP
    <input type="checkbox" name="hobby" value="Java">Java
    <input type="checkbox" name="hobby" value="C++">C++
    <input type="checkbox" name="hobby" value="Python">Python
    <br>
    <button onclick="checkAll()">全选</button>
    <button onclick="checkNo()">全不选</button>
    <button onclick="checkReverse()">反选</button>
</body>
</html>

 

 


6、getElementsByTagName 方法  

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        // 全选
        function checkAll() {
            // document.getElementsByTagName("input"); 是按照指定标签名来进行查询并返回集合
            // 这个集合的操作跟数组 一样
            // 集合中都是dom对象
            // 集合中元素顺序,是它们在html页面中从上到下的顺序
            var inputs = document.getElementsByTagName("input");
            for(var i=0;i<inputs.length;i++){
                inputs[i].checked = true;
            }
        }
    </script>
</head>
<body>
    兴趣爱好:
    <input type="checkbox" value="PHP" checked="checked">PHP
    <input type="checkbox" value="Java">Java
    <input type="checkbox" value="C++">C++
    <input type="checkbox" value="Python">Python
    <br>
    <button onclick="checkAll()">全选</button>
</body>
</html>

 


 7、节点的常用属性和方法

 

节点就是标签对象
* 方法:
*      通过具体的元素节点调用 getElementsByTagName() 方法,获取当前节点的指定标签名孩子节点
*  appendChild(oChildNode) 方法,可以添加一个子节点,oChildNode 是要添加的孩子节点
*
*  属性:
*      childNodes 属性,获取当前节点的所有子节点
*      firstChild 属性,获取当前节点的第一个子节点
*      lastChild 属性,获取当前节点的最后一个子节点
*      parentNode 属性,获取当前节点的父节点
*      nextSibling 属性,获取当前节点下一个节点
*      previousSibling 属性,获取当前节点的上一个节点
*      className 用于获取或设置标签的class属性值
*      innerHTML 属性,表示获取/设置起始标签和结束标签中的内容
*      innerText 属性,表示获取/设置起始标签和结束标签中的文本

例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="../../css/dom.css">
    <script type="text/javascript">
        /**
         * 节点就是标签对象
         * 方法:
         *      通过具体的元素节点调用 getElementsByTagName() 方法,获取当前节点的指定标签名孩子节点
         *  appendChild(oChildNode) 方法,可以添加一个子节点,oChildNode 是要添加的孩子节点
         *
         *  属性:
         *      childNodes 属性,获取当前节点的所有子节点
         *      firstChild 属性,获取当前节点的第一个子节点
         *      lastChild 属性,获取当前节点的最后一个子节点
         *      parentNode 属性,获取当前节点的父节点
         *      nextSibling 属性,获取当前节点下一个节点
         *      previousSibling 属性,获取当前节点的上一个节点
         *      className 用于获取或设置标签的class属性值
         *      innerHTML 属性,表示获取/设置起始标签和结束标签中的内容
         *      innerText 属性,表示获取/设置起始标签和结束标签中的文本
         */
        window.onload = function () {
            //1、查找#bj节点
            document.getElementById("btn01").onclick = function () {
                var bjObj = document.getElementById("bj");
                alert(bjObj.innerHTML);
            }
            //2、查找所有li节点
            document.getElementById("btn02").onclick = function () {
                var lis = document.getElementsByTagName("li");
                alert(lis.length);
            }
            //3、查找name=gender的所有节点
            document.getElementById("btn03").onclick = function () {
                //var genders = document.getElementsByName("gender")[1].value;  //获取具体值
                var genders = document.getElementsByName("gender");
                alert(genders.length);
            }
            //4、查找#city下所有的li节点
            document.getElementById("btn04").onclick =  function () {
                //1、获取id为city的节点
                //2、通过city节点,getElementsTagName按标签名查找子节点
               var lis = document.getElementById("city").getElementsByTagName("li")
               alert(lis.length);
            }
            //5、返回#city的所有子节点
            document.getElementById("btn05").onclick =  function () {
                //1、获取id为city的节点
                //2、通过city获取所有节点
                var childnode = document.getElementById("city").childNodes.length;
                alert(childnode);
            }
            //6、返回#phone的第一个子节点
            document.getElementById("btn06").onclick =  function () {
                var firstn = document.getElementById("phone").firstChild.innerHTML;
                alert(firstn);
            }
            //7、返回#bj的父节点
            document.getElementById("btn07").onclick =  function () {
                //1、查找id为bj的节点
                //2、bj节点获取父节点
                var parentnode = document.getElementById("bj").parentNode.innerText;//innerHTML也可以
                alert(parentnode);
            }
            //8、返回#android的前一个兄弟节点
            document.getElementById("btn08").onclick =  function () {
                //1、获取id为android的节点
                //2、通过android节点获取前面兄弟节点
                alert(document.getElementById("android").previousSibling.innerHTML)
            }
            //9、返回#username的vaule属性
            document.getElementById("btn09").onclick =  function () {
                alert(document.getElementById("username").value);
            }
            //10、设置#username的value属性值
            document.getElementById("btn10").onclick =  function () {
                document.getElementById("username").value = "爱新觉罗.弟弟";
            }
            //11、返回#bj的文本值
            document.getElementById("btn11").onclick =  function () {
                //alert(document.getElementById("bj").innerHTML);
                alert(document.getElementById("bj").innerText);
            }
        }
    </script>
</head>
<body>
<div id="total">
    <div class="inner">
        <p>
            你喜欢那个城市?
        </p>

        <ul id="city">
            <li id="bj">北京</li>
            <li>上海</li>
            <li>东京</li>
            <li>首尔</li>
        </ul>

        <br>
        <br>

        <p>
            你喜欢那款单击游戏?
        </p>

        <ul id="game">
            <li id="rl">红警</li>
            <li>实况</li>
            <li>极品飞车</li>
            <li>魔兽</li>
        </ul>

        <br>
        <br>

        <p>
            你手机操作系统是?
        </p>

        <ul id="phone"><li>IOS</li><li id="android">Android</li><li>Windows Phone</li></ul>
    </div>

    <div class="inner">
        gender:
        <input type="radio" name="gender" value="male"/>
        Male
        <input type="radio" name="gender" value="female">
        Female
        <br>
        <br>
        name:
        <input type="text" name="name" id="username" value="abcde"/>
    </div>
</div>
<div id="btnList">
    <div><button id="btn01">查找#bj节点</button></div>
    <div><button id="btn02">查找所有li节点</button></div>
    <div><button id="btn03">查找name=gender的所有节点</button></div>
    <div><button id="btn04">查找#city下所有的li节点</button></div>
    <div><button id="btn05">返回#city的所有子节点</button></div>
    <div><button id="btn06">返回#phone的第一个子节点</button></div>
    <div><button id="btn07">返回#bj的父节点</button></div>
    <div><button id="btn08">返回#android的前一个兄弟节点</button></div>
    <div><button id="btn09">返回#username的vaule属性</button></div>
    <div><button id="btn10">设置#username的value属性值</button></div>
    <div><button id="btn11">返回#bj的文本值</button></div>
</div>
</body>
</html>
#total{
    width: 500px;
    height: 600px;
    /*border: 1px solid black;*/
    float: left;
    position: absolute;
    left: 0px;
    top: 10px;
    margin-left: 50px;
}

p{
    position: relative;
    left: 20px;
}

#city ul{
    list-style: none;
    margin-left: 20px;
    width: 200px;
}
#city li{
    text-align: center;
    padding-top: 3px;
    display: block;
    width: 40px;
    float: left;
    border: 1px solid black;
    margin-left: 10px;
    background-color: chartreuse;
}
#game ul{
    list-style: none;
    margin-left: 30px;
    width: 200px;
}
#game li{
    text-align: center;
    padding-top: 3px;
    display: block;
    width: 67px;
    float: left;
    border: 1px solid black;
    margin-left: 10px;
    background-color: chartreuse;
}
#phone ul{
    list-style: none;
    margin-left: 30px;
    width: 300px;
}
#phone li{
    text-align: center;
    padding-top: 3px;
    display: block;
    width: 120px;
    float: left;
    border: 1px solid black;
    margin-left: 10px;
    background-color: chartreuse;
}
.inner{
    width: 480px;
    float: left;
    border: 1px solid black;
    margin-top: 30px;
    padding-left: 20px;
    padding-bottom: 20px;
    padding-top: 20px;
}
#btnList{
    left: 600px;
    top: 10px;
    position: absolute;
    float: left;
    margin-top: 25px;
}
#btn01,#btn02,#btn03,#btn04,#btn05,#btn06,#btn07,#btn08,#btn09,#btn10,#btn11{
    width: 300px;
    height: 25px;
    margin-top: 10px;
    background-color: azure;
    font-family: 华文仿宋;
    font-weight: bolder;
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值