javascript--第五天---獲取對象的其他方式

單個對象:

var box = document.getElementsById("box");
console.dir(oBox);//打印對象詳情 var wrap = document.querySelector("#box .wrap"); 不兼容ie7及一下瀏覽器

多個對象

集合:需要通過【序號】來獲取對應的標籤節點,即便只有一個

document.getElementsByClassName()不兼容ie678及一下瀏覽器
document.getElementsByTagName()
document.getElementsByName()
document.querySelectorAll()
不兼容ie7及一下瀏覽器

通過id直接獲取 極其不推薦,但是調試好用,在控制檯直接打印box就行

<div id="box"></div>
console.dir(box);

通過document 直接獲取 包括head title body

console.log(document.head); 獲取元素document.head 給元素賦值document.title="hello";

通過類名獲取 獲取的時一個類數組 ie8以下不兼容

var box = document.getElementsByClassName("box");

box[0]代表第一個box

通過標籤獲取 獲取的時一個類數組

var divs =  document.getElementsByTagName("div");

通過name獲取 獲取的時一個類數組

<input type="text" name="user">
var ipts = document.ElementsByName("user");

對於類名/標籤名/name 我們可以先確定選擇範圍 在進行下一步選擇

第一步 var obox = document.getxxxx
第二步 obox.getxxxxx 進行進一步查找

通過querySelector 查詢選擇器 ,性能極低

<div id="box">
    <div class="wrap"></div>
</div>
 <div class="wrap"></div>
 var wrap = document.querySelector("#box .wrap");

需要注意的是一定要帶上選擇器的標識符,id就要寫# class就要寫點

var wrap = document.querySelector(".wrap");

此時滿足條件的有兩個,但是隻會取第一個 <div id="box"><div class="wrap"></div></div>

var wrap = document.querySelectorAll(".wrap");  

如果精準獲取就document.querySelectorAll("#box .wrap")但是也得加下標 wrap[0]

此時是個集合,會取所有滿足條件的 wrap[1]代表取第一個

<ul>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
</ul>
<ul class="season">
    <li></li>
    <li></li>
    <li></li>
    <li></li>
</ul>
要獲取夏
var mytext = document.querySelector(".season>li:nth-child(2)").innerHTML;

判斷時應該注意什麼

  1. 不要使用顏色做判斷 console.log(getComputedStyle(oBox)["background-color"]);console.log(oBox.style.backgroundColor);兩個的結果不一樣
  2. 不能用複合屬性做判斷
  3. 不能用url做判斷 涉及到字符串的轉換 和相對/絕對路徑

靜態獲取和動態獲取

靜態獲取

  1. 對於getElementById 獲取到元素之後不會重新獲取 可以對他進行隨意更改

動態獲取

  1. 對於getElementByTagName getElementByClassName getElementByName 元素是動態獲取 獲取到元素之後不會重新獲取
  2. querySelector querySelectorAll都爲靜態獲取
<body>
    <div id="box">123</div>
</body>
<script>
    var oBox = document.getElementById("box");
    oBox.id = "lisi";
    oBox.innerHTML = "hahaha";
</script>

成功執行

var aBox = document.getElementsByClassName("mybox");
var
    aBox[0].className = "lisi";
    aBox[0].innerHTML= "heihei";

這樣沒有效果

var aBox = document.getElementsByClassName("mybox");
    var mybox = aBox[0];
    mybox.className = "lisi";
    mybox.innerHTML= "heihei";

這樣就可以

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章