1. 程式人生 > >JS 之Document物件 獲取byId byName byTagName

JS 之Document物件 獲取byId byName byTagName

JS 物件模型Document 的標籤節點獲取 byId byName byTagname

一、關於Document

《一》、DOM 全稱是Document Object Model 文件物件模型

<1>、Document 物件的理解:

第一點:Document它管理了所有的Html文件內容。

第二點:document它是一種樹結構的文件。有層級關係。

第三點:它讓我們把所有的標籤 都 物件化 

第四點:我們可以通過document訪問所有的標籤物件。

<2>、有了Document物件自然有了其物件的一些基本屬性,在Document中

主要的操作物件時節點 Node

節點:Node——構成HTML文件最基本的單元。

節點我們關心的主要是:

        元素節點:HTML文件中的HTML標籤

        屬性節點:標籤的屬性

        文字節點:HTML標籤中的文字內容

<3>、節點的常用屬性

nodeName表示節點名

nodeType表示節點型別

nodeValue表示節點值

<4>三類節點的三個屬性如下:

nodeName nodeType nodeValue
元素節點 標籤名 1 null
屬性節點 屬性名 2 屬性值
文字節點 #text 3 文字內容

<5>、舉例:

<div id="div01">hello world</div>

在上面的這個標籤中
<div>         是元素節點
id=”div01”    是屬性節點
hello world   是文字節點

對於三類節點屬性用alert()測試如下:

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
<script type="text/javascript">

    //動態註冊頁面載入完成onload事件
    window.onload = function() {

    // <div> 元素節點
    var divObj = document.getElementById("div01");
    alert(divObj.nodeName);  // 節點名 DIV
    alert(divObj.nodeType);  // 節點型別 1
    alert(divObj.nodeValue); // 節點值 null

    // id=”div01” 是屬性節點
    var idNode = divObj.getAttributeNode("id");
    alert(idNode.nodeName);    // 節點名  id
    alert(idNode.nodeType);   // 節點型別 2
    alert(idNode.nodeValue); // 節點值  屬性值 div01

    // hello world 是文字節點
    var textNode = divObj.firstChild;
    alert(textNode.nodeName);   // 節點名  #text
    alert(textNode.nodeType);   // 節點型別 3
    alert(textNode.nodeValue);  // 節點值  文字內容
    }
</script>
    </head>
    <body>
    <div id="div01">hello world</div>
    </body>
    </html>

★★二、Document中查詢標籤dom物件的三種方法

<一>document.getElementById(elementId)

通過標籤的id屬性查詢標籤dom物件,elementId是標籤的id屬性值
<二>document.getElementsByName(elementName)

通過標籤的name屬性查詢標籤dom物件,elementName標籤的name屬性值

<三>document.getElementsByTagName(tagname)

通過標籤名查詢標籤dom物件。tagname是標籤名

(1)使用document.getElementById(elementId)獲取dom物件

如:使用document.getElementById(elementId)

例:表單提交時驗證賬號輸入是否合法 (通過byId獲取dom物件然後使用)

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">

// 頁面載入完成之後
window.onload = function() {

    //我們要操作所有的標籤物件都要分兩步
    // 1.先獲取標籤物件
    var usernameObj = document.getElementById("username");

    // 2.操作標籤物件的屬性或者方法
    alert("修改原使用者為我已經改變);

    usernameObj.value = "我已經改變";
         //  usernameObj.type="password";

這裡效果如下:
這裡寫圖片描述
// 獲取button按鈕的標籤物件
var buObj = document.getElementById(“bu01”);

    // 動態給按鈕繫結單擊事件 
    buObj.onclick = function() {

        //我們希望點選按鈕之後。獲取使用者名稱輸入框裡的文字內容做合法性驗證
        // 驗證使用者名稱必須由字母,字母,下劃線組成。並且長度是6到15位

        //1.先獲取標籤物件
        var usernameObj = document.getElementById("username");

        //2.通過標籤物件.value獲取輸入框裡的文字內容
        var usernameObjText = usernameObj.value;

        //3.我們建立一個正則物件去驗證
        var patt = /^\w{6,15}$/;//只能為數字或字母或下劃線6-15位

        var result = patt.test(usernameObjText);

        //4.提示使用者
        var spanObj = document.getElementById("usernameSpan");
        // innerHTML

        if (result) {

// alert("使用者名稱合法");新增圖片顯示效果
            spanObj.innerHTML = "<img alt='' width='15' height='15' src=\"right.png\"/>";

不合法效果如下:
這裡寫圖片描述
} else {
// alert(“使用者名稱不合法”);新增圖片顯示效果
spanObj.innerHTML = “ width='15' height='15' src=\”;
}
}
}

合法效果如下:
這裡寫圖片描述

</script>
</head>
<body>
使用者名稱:<input id="username" type="text" value="7abc"/>
<span id="usernameSpan" style="color: red;"></span><br/>
密碼:&nbsp;&nbsp;&nbsp;<input id="password" type="password" /><br />
<button id="bu01">提交</button>
</body>
</html>

(2)使用document.getElementsByName(elementName)獲取dom物件

如:使用document.getElementsByName(elementName)

簡單說明:

實現多選按鈕的checkBox 的 全選 全不選 反選功能如下>>>>

//頁面載入完成之後做如下測試:

window.onload = function() {

// 通過name屬性查詢所有的標籤物件

var hobbyObjs = document.getElementsByName(“hobby”);

// getElementsByName方法查詢的是name屬性,返回的是一個集合,

// 我們對這個集合的操作,也就是獲取其中的元素跟陣列一樣

// 這個集合中的元素出現的順序

就是這些標籤在html頁面中從上到下出現的順序可以做如下測試

// alert(hobbyObjs.length); 結果:4

// alert(hobbyObjs); 結果:Object noteList

// var checkBoxObj = hobbyObjs[3];

// alert(checkBoxObj.checked); 結果:true

// checkBoxObj.checked = true;

}

實現三個選擇功能如下:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">

//①全選功能
function checkAll(){

    //1.先獲取要操作所有的標籤物件input type=checkbox
    var hobbyObjs = document.getElementsByName("hobby");

    //alert(hobbyObjs.length);

效果:
這裡寫圖片描述
//alert(hobbyObjs);
效果:

這裡寫圖片描述
//2.遍歷所有的標籤物件,獲取到每一個input type=checkbox
for (var i = 0; i < hobbyObjs.length; i++) {
var hobbyObj = hobbyObjs[i];

        //3.修改每一個複選框標籤物件的checked屬性值為true
        hobbyObj.checked = true;
    }
}

//②全不選功能
function checkNoAll(){

    //1.先獲取要操作所有的標籤物件input type=checkbox
    var hobbyObjs = document.getElementsByName("hobby");

    //2.遍歷所有的標籤物件,獲取到每一個input type=checkbox
    for (var i = 0; i < hobbyObjs.length; i++) {
        var hobbyObj = hobbyObjs[i];

        //3.修改每一個複選框標籤物件的checked屬性值為false
        hobbyObj.checked = false;
    }
}

//③反選功能
function checkReverse(){

    //1.先獲取要操作所有的標籤物件input type=checkbox
    var hobbyObjs = document.getElementsByName("hobby");

    //2.遍歷所有的標籤物件,獲取到每一個input type=checkbox
    for (var i = 0; i < hobbyObjs.length; i++) {

    //3.修改每一個複選框標籤物件的checked屬性值為相反狀態    
        var hobbyObj = hobbyObjs[i];
        hobbyObj.checked = !hobbyObj.checked;
    }
}
</script>
</head>
<body>
興趣愛好:
<input name="hobby" type="checkbox" value="c" checked="checked" />C
<input name="hobby" type="checkbox" value="cpp"/>C++
<input name="hobby" type="checkbox" value="java"/>java
<input name="hobby" type="checkbox" value="csharp"/>C#
<button onclick="checkAll()">全選</button>
<button onclick="checkNoAll()">全不選</button>
<button onclick="checkReverse()">反選</button>
</body>
</html>

(2)使用document.getElementsByTagName(tagname)獲取dom物件

例:使用document.getElementsByTagName(tagname)

實現全選功能:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">

// 頁面載入完成之後
window.onload = function(){
// 通過標籤名查詢所有給定標籤名的物件集合
//      var inputObjs = document.getElementsByTagName("input");

// getElementsByTagName方法返回的也是物件集合。
// 我們要獲取這個集合中的元素,可以像陣列一樣操作。通過下標獲取

//      alert(inputObjs);
//      alert(inputObjs.length);

//查詢所有button按鈕
    var buttonObjs = document.getElementsByTagName("button");

//      alert(buttonObjs.length);  測試長度

    var buttonObj = buttonObjs[0];

    buttonObj.onclick = function(){
        //1.先獲取標籤物件
        var inputObjs = document.getElementsByTagName("input");

        //2.遍歷修改每一個標籤物件的checked的屬性為true
        for (var i = 0; i < inputObjs.length; i++) {
            inputObjs[i].checked = true;
        }
    }
}

function abc(){
    var hobbyObjs = document.getElementsByName("hobby");
    alert(hobbyObjs.length);
}

</script>
</head>
<body>

    <input name="hobby" type="checkbox" value="c" checked="checked" />C
    <input type="checkbox" value="cpp"/>C++
    <input type="checkbox" value="java"/>java
    <input type="checkbox" value="csharp"/>C#

<button>全選</button>
</body>
</html>

效果:

這裡寫圖片描述