Javascript - DOM

Javascript - DOM

DOM(Document Object Model)是一套對文檔的內容進行抽象和概念化的方法。css

當網頁被加載時,瀏覽器會建立頁面的文檔對象模型(Document Object Model)。html

HTML DOM 模型被構造爲對象的樹。java

HTML DOM 樹

DOM標準規定HTML文檔中的每一個成分都是一個節點(node):node

  • 文檔節點(document對象):表明整個文檔
  • 元素節點(element 對象):表明一個元素(標籤)
  • 文本節點(text對象):表明元素(標籤)中的文本
  • 屬性節點(attribute對象):表明一個屬性,元素(標籤)纔有屬性
  • 註釋是註釋節點(comment對象) 

JavaScript 能夠經過DOM建立動態的 HTML:瀏覽器

  • JavaScript 可以改變頁面中的全部 HTML 元素
  • JavaScript 可以改變頁面中的全部 HTML 屬性
  • JavaScript 可以改變頁面中的全部 CSS 樣式
  • JavaScript 可以對頁面中的全部事件作出反應

查找標籤

直接查找

document.getElementById           根據ID獲取一個標籤
document.getElementsByClassName   根據class屬性獲取
document.getElementsByTagName     根據標籤名獲取標籤合集

注意:app

涉及到DOM操做的JS代碼應該放在文檔的哪一個位置。dom

間接查找

parentElement            父節點標籤元素
children                 全部子標籤
firstElementChild        第一個子標籤元素
lastElementChild         最後一個子標籤元素
nextElementSibling       下一個兄弟標籤元素
previousElementSibling   上一個兄弟標籤元素

節點操做

建立節點

語法:函數

createElement(標籤名)ui

示例:

var divEle = document.createElement("div");

添加節點

語法:

追加一個子節點(做爲最後的子節點)

somenode.appendChild(newnode);

把增長的節點放到某個節點的前邊。

somenode.insertBefore(newnode,某個節點);

示例:

var imgEle=document.createElement("img");
imgEle.setAttribute("src", "http://image11.m1905.cn/uploadfile/s2010/0205/20100205083613178.jpg");
var d1Ele = document.getElementById("d1");
d1Ele.appendChild(imgEle);

刪除節點:

語法:

得到要刪除的元素,經過父元素調用該方法刪除。

somenode.removeChild(要刪除的節點)

替換節點:

語法:

somenode.replaceChild(newnode, 某個節點);

屬性節點

獲取文本節點的值:

var divEle = document.getElementById("d1")
divEle.innerText
divEle.innerHTML

設置文本節點的值:

var divEle = document.getElementById("d1")
divEle.innerText="1"
divEle.innerHTML="<p>2</p>"

attribute操做

var divEle = document.getElementById("d1");
divEle.setAttribute("age","18")
divEle.getAttribute("age")
divEle.removeAttribute("age")

// 自帶的屬性還能夠直接.屬性名來獲取和設置
imgEle.src
imgEle.src="..."

獲取值操做

語法:

elementNode.value

適用於如下標籤:

  • .input
  • .select
  • .textarea

    var iEle = document.getElementById("i1");
    console.log(iEle.value);

    var sEle = document.getElementById("s1");
    console.log(sEle.value);

    var tEle = document.getElementById("t1");
    console.log(tEle.value);

class的操做

className  獲取全部樣式類名(字符串)

classList.remove(cls)  刪除指定類
classList.add(cls)  添加類
classList.contains(cls)  存在返回true,不然返回false
classList.toggle(cls)  存在就刪除,不然添加

指定CSS操做

obj.style.backgroundColor="red"

JS操做CSS屬性的規律:

1.對於沒有中橫線的CSS屬性通常直接使用style.屬性名便可。如:

obj.style.margin
obj.style.width
obj.style.left
obj.style.position

2.對含有中橫線的CSS屬性,將中橫線後面的第一個字母換成大寫便可。如:

obj.style.marginTop
obj.style.borderLeftWidth
obj.style.zIndex
obj.style.fontFamily

事件

HTML 4.0 的新特性之一是有能力使 HTML 事件觸發瀏覽器中的動做(action),好比當用戶點擊某個 HTML 元素時啓動一段 JavaScript。下面是一個屬性列表,這些屬性可插入 HTML 標籤來定義事件動做。

經常使用事件

onclick        當用戶點擊某個對象時調用的事件句柄。
ondblclick     當用戶雙擊某個對象時調用的事件句柄。

onfocus        元素得到焦點。               // 練習:輸入框
onblur         元素失去焦點。               應用場景:用於表單驗證,用戶離開某個輸入框時,表明已經輸入完了,咱們能夠對它進行驗證.
onchange       域的內容被改變。             應用場景:一般用於表單元素,當元素內容被改變時觸發.(select聯動)

onkeydown      某個鍵盤按鍵被按下。          應用場景: 當用戶在最後一個輸入框按下回車按鍵時,表單提交.
onkeypress     某個鍵盤按鍵被按下並鬆開。
onkeyup        某個鍵盤按鍵被鬆開。
onload         一張頁面或一幅圖像完成加載。
onmousedown    鼠標按鈕被按下。
onmousemove    鼠標被移動。
onmouseout     鼠標從某元素移開。
onmouseover    鼠標移到某元素之上。

onselect      在文本框中的文本被選中時發生。
onsubmit      確認按鈕被點擊,使用的對象是form。

綁定方式:

方式一:

<div id="d1" onclick="changeColor(this);">點我</div>
<script>
  function changeColor(ths) {
    ths.style.backgroundColor="green";
  }
</script>

注意:

this是實參,表示觸發事件的當前元素。

函數定義過程當中的ths爲形參。

方式二:

<div id="d2">點我</div>
<script>
  var divEle2 = document.getElementById("d2");
  divEle2.onclick=function () {
    this.innerText="呵呵";
  }
</script>

搜索框示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>搜索框示例</title>

</head>
<body>
    <input id="d1" type="text" value="請輸入關鍵字" onblur="blur()" onfocus="focus()">
    
<script>
function focus(){
    var inputEle=document.getElementById("d1");
    if (inputEle.value==="請輸入關鍵字"){
        inputEle.value="";
    }
}

function blur(){
    var inputEle=document.getElementById("d1");
    var val=inputEle.value;
    if(!val.trim()){
        inputEle.value="請輸入關鍵字";
    }
}
</script>
</body>
</html>

select聯動

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="x-ua-compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>select聯動</title>
</head>
<body>
<select id="province">
  <option>請選擇省:</option>
</select>

<select id="city">
  <option>請選擇市:</option>
</select>

<script>
  data = {"河北省": ["廊坊", "邯鄲"], "北京": ["朝陽區", "海淀區"], "山東": ["威海市", "煙臺市"]};

  var p = document.getElementById("province");
  var c = document.getElementById("city");

  for (var i in data) {
    var optionP = document.createElement("option");
    optionP.innerHTML = i;
    p.appendChild(optionP);
  }
  p.onchange = function () {
    var pro = (this.options[this.selectedIndex]).innerHTML;
    var citys = data[pro];
    // 清空option
    c.innerHTML = "";

    for (var i=0;i<citys.length;i++) {
      var option_city = document.createElement("option");
      option_city.innerHTML = citys[i];
      c.appendChild(option_city);
    }
  }
</script>
</body>
</html>
相關文章
相關標籤/搜索