天天看點

JavaScript進階進階

一、基礎 1、在firbug調試器的控制台輸出内容。

function(){
console.log()
}           

2、argument。沒有形參也可表示傳進來的參數,用數組表示,如argument[0],argument[1] 3、函數自調用。

function get(){
if(n==1)
return 1;
return n*arguments.callee(n-1);
}           

4、匿名函數執行。

(function(){
console.log(“hello”);
})();  
//它還可以傳形參,如:(function(title){ console.log(“hello”+title); })(“我是形參”);
//這相當于
var get = function(){
console.log(“hello”);
};
get();           

匿名函數好處:程式代碼沒有停頓,立即執行,可以避免變量污染,比如jquery架構,就是個很大的匿名函數自調用。 5、全局變量。

function f1(){
subject =”hello”;  //函數内部也能聲明全局變量,但需要調用一下函數才管用
}
f1();
console.log(subject);           

6、數組指派。

比如:animal[‘mm’] = “apple”; animal.north = “wolf”;

7、數組周遊。

for(var 下标變量 in 數組/對象)  如:
for (var k in animal){
console.log( animal [k] );
}           

8、eval(“字元串”)。 運作字元串裡的js代碼,字元串内容必須符合js文法規則。eval()主要用于把其他使用者傳遞過來的字元串資訊轉變為js的實體(對象、數組等),比如把接口傳回的内容轉為對象。 二、DOM 1、擷取節點屬性。 如:擷取一個input标簽的節點屬性值

var nm = document.getElementsByTagName(‘input’)[0];
function f1(){
console.log(nm.type);
console.log(nm.name);
console.log(nm.value);
console.log(nm.class); //class是js的關鍵字,需要變形為className操作:nm.className
}           

2、attributes。 console.log(nm.attributes); //以類似json格式傳回對應節點内部的全部屬性節點資訊 如:[type=”text”,class=”orange”,weight=”130”] 當然也可擷取單個節點的值。如 nm.attributes.value 3、nodeType。不同值代表不同節點類型,1為元素節點 ,2為屬性節點 等等 4、節點複制。被複制節點.cloneNode(true/false);  true是深層複制,複制本身節點和内部節點;false是淺層複制,隻複制本身節點。如:

<ul id=”ning”> <li> aaa</li> </ul>
var ning = document.getElementById(‘ning’);
var fu = ning.cloneNode(true);  //深層複制,連ul裡li的aaa也都複制了
var south = document.getElementById(“south”);
south.appendChild(fu);           

5、dom操作css樣式 擷取css樣式: 元素節點.style.css樣式名稱; 如 divnode.style.width; 設定css樣式: 如 divnode.style.width = ‘500px’ ; 注意:dom操作css樣式隻能操作行内樣式,且樣式有則改之,無則新增,複合樣式font-size要變為fontSize。 6、dom2級事件。   6.1主流浏覽器方式(ie9以上):     itnode.addEventListener(事件類型,事件處理[,事件流]);  //設定 事件流可以不設定     itnode.removeEventListener(事件類型,事件處理[,事件流]);  //取消   6.2Ie浏覽器方式(ie6/7/8):     itnode.attachEvent(事件類型,事件處理);  //設定     itnode.detachEvent(事件類型,事件處理);  //取消 事件類型:主流浏覽器沒有on,如addEventListener(‘click’,……);ie浏覽器有on 事件處理:一個有名或匿名函數,如addEventListener(‘click’,function(){}) 事件流:   true捕捉型:事件從内部往外部依次執行,   [false冒泡型]:事件從外部往内部依次執行(預設),如div裡有p,p裡有span,他仨都有onclick事件 事件取消(removeEventListener/detachEvent)操作具體要求:   ①事件處理 必須是有名函數,不可以是匿名函數   ②事件取消的參數與綁定的參數完全一緻(數量/内容) 7、return false隻針對dom1級事件起作用,event.preventDefault(); dom1和dom2都起作用。(比如這次方法能阻斷post請求的浏覽器跳轉) 8、加載事件:文檔加載完成後,執行js 兩種設定方式:

window.onload = 有名函數  //這中dom1級事件隻能設一個,多了會覆寫
Window.onload = function(){
有名函數;
有名函數
} //這種匿名函數的方式就能寫很多有名函數