javascript函式的靜態載入與動態執行
阿新 • • 發佈:2018-12-23
函式定義是,已經寫入了記憶體,是靜態的模式,但是我們經常想得到的缺失動態效果
錯誤
var trs = document.getElementById("tr");
var length = trs.length;
for(var index=0;index<length;index++){
trs[index].onmouseover = function(){
trs[index].style.color = "red";
}
}
函式定義時,只會載入進入記憶體,是不會執行的
對於函式內變數,重複的重新整理只會保留最後重新整理的值
通過靜態的宣告的函式,只能夠實現一次的操作,多層的操作會報錯
尤其是想通過迴圈將單一的函式操作賦予多個標籤時
想要只定義一個方法,實現多重的動態操作,有兩種辦法
1. 物件指定:在物件屬性直接宣告,函式和標籤直接分離,相當於傳入引數後定製函式
function test(index){
var trs = document.getElementById("tr");
trs[i].style.color = "red";
}
2. 動態介面:使用this關鍵字,讓函式能夠自動識別自身扮演角色,而不是呆板的單一模板
自我識別,利用同一份模板,但是對於自身角色能夠準確的識別var trs = document.getElementById("tr"); var length = trs.length; for(var index=0;index<length;index++){ trs[index].onmouseover = function(){ this.style.color = "red"; } }
有生命的物件而不是沉悶的死物模板
3. 時間監聽
var text = document.getElementById("text");
text.addEventListener(type,func,model);
其中
type:事件型別,onclick...
func:執行的函式
model:響應型別,
true:捕捉,先父後子
false:冒泡,先子後父,預設
同一事件,可以同時繫結多個方法,分開新增事件即可