1. 程式人生 > 實用技巧 >BOM&DOM

BOM&DOM

BOM 瀏覽器物件模型

window物件的子物件中的location

location.href   獲取當前url:"https://www.cnblogs.com/clschao/articles/10092991.html"
location.href="URL" // 跳轉到指定頁面
	示例:location.href = 'http://www.baidu.com';直接跳轉到百度
location.reload() 重新載入頁面,就是重新整理一下頁面

計時器相關(計時器是非同步的)

setTimeout 計時器,一段時間之後做某些事情

setTimeout('confirm("你好");',3000);  #3秒之後執行前面的js程式碼
setTimeout(confirm('xxx'),3000);  #如果寫的不是字串,會直接執行
setTimeout(function(){confirm('xxx')},3000);  #最好寫成函式

var a = setTimeout(function(){console.log('xxx')},3000);  #a是瀏覽器來記錄計時器的一個隨機數字
clearTimeout(a)  #清除計時器,通過這個數字可以清除

setInterval 計時器,每隔一段時間做某些事情

var a = setInterval(function(){console.log('xxx')},3000);  
clearInterval(a);

DOM

選擇器

直接查詢

document.getElementById           根據ID獲取一個標籤
document.getElementsByClassName   根據class屬性獲取(可以獲取多個元素,所以返回的是一個數組)
document.getElementsByTagName     根據標籤名獲取標籤合集
示例:
	<div class="c1" id="d1">
    	待到將軍歸來日,朕與將軍解戰袍!
	</div>

	<div class="c1" id="d2">
    	日照香爐生紫煙,遙看瀑布掛前川!
	</div>
	
	var a = document.getElementById('d1');  # 獲取id屬性值為d1的標籤  拿到的直接是標籤物件
	var a = document.getElementsByClassName('c1'); #獲取class值為c1的所有標籤  拿到的是陣列
	var a = document.getElementsByTagName('div');  #獲取所有div標籤  拿到的是陣列
	
	

間接查詢

var a = document.getElementById('d1');
a.parentElement; #獲取a這個標籤的父級標籤.
children                 所有子標籤
firstElementChild        第一個子標籤元素
lastElementChild         最後一個子標籤元素
nextElementSibling       下一個兄弟標籤元素
previousElementSibling   上一個兄弟標籤元素

節點操作

建立節點(建立標籤) 
	var a = document.createElement('標籤名稱'); 
	示例,建立a標籤
		var a = document.createElement('a');
	var dd = document.getElementById('dd'); 找到div標籤
	
新增節點
	#新增節點,新增到了最後
	dd.appendChild(a);將建立的a標籤新增到dd這個div標籤裡面的最後.

	#在某個節點前面新增節點
	父級標籤.insertBefore(新標籤,某個兒子標籤)
	示例
		var dd = document.getElementById('dd');  #找到父級標籤
		var a = document.createElement('a');   #建立一個新的a標籤
		var d2 = dd.children[1];  #找到父級標籤下的某個兒子標籤
		dd.insertBefore(a,d2);   #將a標籤插入到上面這個兒子標籤的前面.
刪除節點
	dd.removeChild(d2);  父級標籤中刪除子標籤
        
替換節點
	var dd = document.getElementById('dd');  #找到父級標籤
	var a = document.createElement('a');  #建立a標籤
	a.innerText = '百度';  
	var d1 = dd.children[0];  #找到要被替換的子標籤
	dd.replaceChild(a,d1);  #替換
    

文字操作

d1.innerText; 檢視

設定:
	d1.innerText = "<a href=''>百度</a>";  
	d1.innerHTML = "<a href=''>百度</a>";  能夠識別標籤

屬性操作

var divEle = document.getElementById("d1");
divEle.setAttribute("age","18")  #比較規範的寫法
divEle.getAttribute("age")
divEle.removeAttribute("age")

// 自帶的屬性還可以直接.屬性名來獲取和設定,如果是你自定義的屬性,是不能通過.來獲取屬性值的
imgEle.src
imgEle.src="..."

值操作

var inp = document.getElementById('username');
inp.value;  #檢視值
inp.value = 'taibai'; #設定值

選擇框:
	<select name="city" id="city">
        <option value="1">上海</option>
        <option value="2">北京</option>
        <option value="3">深圳</option>
    </select>
	
	var inp = document.getElementById('city');
	inp.value;  #檢視值
	inp.value = '1';  #設定值
	

class的操作

var d = document.getElementById('oo'); 
d.classList;  #獲得這個標籤的class屬性的所有的值
d.classList.add('xx2');  #新增class值
d.classList.remove('xx2'); #刪除class值
d.classList.contains('xx2');  #判斷是否有某個class值,有返回true,沒有返回false
d.classList.toggle('xx2');  #有就刪除,沒有就增加

css操作

var d = document.getElementById('oo');
d.style.backgroundColor = 'deeppink';  有橫槓的css屬性,寫法要去掉橫槓,並且橫槓後面的單詞首字母大寫
d.style.height = '1000px'

事件

繫結事件的方式有兩種

方式1:

<div id="d1" class="c1" onclick="f1();"></div>

<script>
    function f1() {
        var d = document.getElementById('d1');
        d.style.backgroundColor = 'yellow';
    }

</script>

方式2

	<div id="d1" class="c1"></div>

    var d = document.getElementById('d1');
    d.onclick = function () {
        d.style.backgroundColor = 'yellow';
    }

事件裡面的this

繫結方式1:

this表示當前標籤物件
<div id="d1" class="c1" onclick="f1(this);"></div>
function f1(ths) {
        // var d = document.getElementById('d1');
        // d.style.backgroundColor = 'yellow';
        ths.style.backgroundColor = 'yellow';

        var d = document.getElementById('d2');
        d.style.backgroundColor = 'yellow';
    }

方式2:

    <div id="d1" class="c1"></div>
    
    var d = document.getElementById('d1');
    d.onclick = function () {
        this.style.backgroundColor = 'yellow';
        // d.style.backgroundColor = 'yellow'; //this表示當前標籤物件
    }

onblur和onfocus事件

 var inp = document.getElementById('username');
    inp.onfocus = function () {
        var d = document.getElementById('d1');
        d.style.backgroundColor = 'pink';
    };
    // onblur 失去游標時觸發的事件

    inp.onblur = function () {
        var d = document.getElementById('d1');
        d.style.backgroundColor = 'green';
    };

onchange事件,域內容發生變化時觸發

<select name="" id="jishi">
    <option value="1">太白</option>
    <option value="2">alex</option>
    <option value="3">沛齊</option>

</select>

// onchange事件,內容發生變化時觸發的事件
    var s = document.getElementById('jishi');
    s.onchange = function () {
    	//this.options  select標籤的所有的option標籤
    	//this.selectedIndex被選中的標籤在所有標籤中的索引值
        console.log(this.options[this.selectedIndex].innerText + '搓的舒服');
    }
    
    
使用者名稱:<input type="text" id="username">    

    //input標籤繫結onchange事件
    var inp = document.getElementById('username');
    inp.onchange = function () {
        console.log(this.value);  
    };