今天做東東的時候要用js創建html元素然後動態給該元素添加方法,走了不少彎路。最後把解決方法發布,讓大家以後少走彎路。
js文件
function CheckNull(id)
{
//DoSomeThing
}
var CheckNewNull= function(id)
{
return function(){
CheckNull(id);
}
}
給Html元素添加方法
//創建一個textarea
std2area=document.createElement("textarea");
//設置屬性
std2area.setAttribute("id","member_Task"+position);
std2area.setAttribute("name","member_Task"+position);
//添加方法
std2area.attachEvent("onblur",CheckNewNull("member_Task"+position));
如果添加方法寫成:std2area.attachEvent("onblur",CheckNull("member_Task"+position));
或者寫成std2area.attachEvent("onblur",CheckNull);
那麼會出現錯誤。原因是這樣做是將CheckNull("member_Task"+position)的返回值賦給onblur
而不是將函數CheckNull賦給該元素。所以正確的做法是將CheckNull用一個函數返回,如上所示。
最後寫寫添加方法的其它途徑:
Std2area.onblur=CheckNull;
Std2area.setAttribute(“onblur”,CheckNull);