JavaScript_DOM节点

认识DOM

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

先来看看下面代码:

将HTML代码分解为DOM节点层次图:

HTML文档可以说由节点构成的集合,DOM节点有:

1. 元素节点:上图中<html>、<body>、<p>等都是元素节点,即标签。

2. 文本节点:向用户展示的内容,如<li>...</li>中的JavaScript、DOM、CSS等文本。

3. 属性节点:元素属性,如<a>标签的链接属性href="http://www.imooc.com"。

节点属性:

遍历节点树:

以上图ul为例,它的父级节点body,它的子节点3个li,它的兄弟结点h2、P。

DOM操作:

注意:前两个是document方法。

getElementsByName()方法

返回带有指定名称的节点对象的集合。

语法:

document.getElementsByName(name)

与getElementById() 方法不同的是,通过元素的 name 属性查询元素,而不是通过 id 属性。

注意:

1. 因为文档中的 name 属性可能不唯一,所有 getElementsByName() 方法返回的是元素的数组,而不是一个元素。

2. 和数组类似也有length属性,可以和访问数组一样的方法来访问,从0开始。

<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
function getnum(){
  var mynode=document.getElementsByName("myt");  
  alert(mynode.length);
}
</script>
</head>
<body>
<input name="myt" type="text" value="1">
<input name="myt" type="text" value="2">
<input name="myt" type="text" value="3">
<input name="myt" type="text" value="4">
<input name="myt" type="text" value="5">
<input name="myt" type="text" value="6">

<br />
<input type="button" onclick="getnum()" value="看看有几项?" />
</body>
</html>

getElementsByTagName()方法

返回带有指定标签名的节点对象的集合。返回元素的顺序是它们在文档中的顺序。

语法:

document.getElementsByTagName(Tagname)

说明:

1. Tagname是标签的名称,如p、a、img等标签名。

2. 和数组类似也有length属性,可以和访问数组一样的方法来访问,所以从0开始。

<!DOCTYPE HTML>
<html>  
<head>  
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<title>爱吃红豆的猫</title>
</head>  
<body>  
    
        <form name="Input">
            <table align="center" width="500px" height="50%" border="1">
                <tr>
                    <td align="center" width="100px">
                        学号:
                    </td>
                    <td align="center" width="300px">
                        <input type="text" id=userid name="user" onblur="validate();">
                        <div id=usermsg></div>
                    </td>
                </tr>
                <tr>
                    <td align="center" width="100px">
                        姓名:
                    </td>
                        <td align="center">
                        <input type="text" name="name">
                    </td>
                </tr>
                <tr>
                    <td align="center" width="%45">
                        性别:
                    </td>
                    <td align="center">
                        <input type="radio" name="sex" value="男">
                        男
                        <input type="radio" name="sex" value="女">
                        女
                    </td>
                </tr>
                <tr>
                    <td align="center" width="30%">
                        年龄:
                    </td>
                    <td align="center" width="300px">
                        <input type="text" name="age">
                    </td>
                </tr>
                <tr>
                    <td align="center" width="100px">
                        地址:
                    </td>
                    <td align="center" width="300px">
                        <input type="text" name="addr">
                    </td>
                </tr>

            </table>
        </form>
        <h1 id="myHead" onclick="getValue()">
            看看三种获取节点的方法?
        </h1>
        <p>
            点击标题弹出它的值。
        </p>
        <input type="button" onclick="getElements()"
            value="看看name为sex的节点有几个?" />
        <Br>
        <input type="button" onclick="getTagElements()"
            value="看看标签名为input的节点有几个?" />
            
    <script type="text/javascript">
        function getValue()
        {
            var myH = document.getElementById("myHead");
            alert(myH.innerHTML)
        }
        function getElements()
        {
            var myS = document.getElementsByName("sex");
            alert(myS.length);
        }

        function getTagElements()
        {
            var myI = document.getElementsByTagName("input");
            alert(myI.length);
        }
        
    </script>        

    </body>
</html>

区别getElementByID,getElementsByName,getElementsByTagName

以人来举例说明,人有能标识身份的身份证,有姓名,有类别(大人、小孩、老人)等。

1. ID 是一个人的身份证号码,是唯一的。所以通过getElementById获取的是指定的一个人。

2. Name 是他的名字,可以重复。所以通过getElementsByName获取名字相同的人集合。

3. TagName可看似某类,getElementsByTagName获取相同类的人集合。如获取小孩这类人,getElementsByTagName("小孩")。

把上面的例子转换到HTML中,如下:

<input type="checkbox" name="hobby" id="hobby1">  音乐

input标签就像人的类别。

name属性就像人的姓名。

id属性就像人的身份证。

方法总结如下:

注意:方法区分大小写

<!DOCTYPE HTML>
<html>    
<head>        
<meta http-equiv="Content-Type" content="text/html; charset=utf8">        
<title>爱吃红豆的猫</title>    
</head>        
<body>        
<form>          
请选择你爱好:<br>          
<input type="checkbox" name="hobby" id="hobby1">  1.音乐          
<input type="checkbox" name="hobby" id="hobby2">  2.登山          
<input type="checkbox" name="hobby" id="hobby3">  3.游泳          
<input type="checkbox" name="hobby" id="hobby4">  4.阅读          
<input type="checkbox" name="hobby" id="hobby5">  5.打球          
<input type="checkbox" name="hobby" id="hobby6">  6.跑步 <br>          
<input type="button" value = "全选" onclick = "checkall();">          
<input type="button" value = "全不选" onclick = "clearall();">          
<p>请输入您要选择爱好的序号,序号为1-6:</p>          
<input id="wb" name="wb" type="text" >          
<input name="ok" type="button" value="确定" onclick = "checkone();">        
</form>        
<script type="text/javascript">        
var hobby1 = document.getElementsByName("hobby");        
function checkall(){            
var hobby = document.getElementsByTagName("input");                     
// 任务1            
for(i=0;hobby.length>i;i++){               
hobby[i].checked=true;           
}        
}        
function clearall(){                                 
// 任务2                
for(i=0;hobby1.length>i;i++){               
hobby1[i].checked=false;           
}        
}                
function checkone(){            
var j=document.getElementById("wb").value;            
if(parseInt(j)<=6 & parseInt(j)>=1){              
hobby1[j-1].checked="true";            
}         
// 任务3         
else {         
alert("请输入正确的序号!!(1~6)");         
document.getElementById("wb").value=null;        
}        
}                
</script>    
</body>
</html>

猜你喜欢

转载自blog.csdn.net/weixin_42693104/article/details/101289007