| |
引用地址: http://callof.net/Site/pView.Asp?id=1270 | |
在一个结构良好的网页中,不仅要做到结构和表现的分离,而且应该做到结构和逻辑的分离。这里的逻辑通常就是指在页面中使用的js脚本,比如: function toggleDl(){ //statement } var dl=document.getElementById("commentsList"); dl.onclick=toggleDl; dl.onclick=toggleDl(); dl.onclick="toggleDl()"; 由:dl.onclick=toggleDl(); 这样的语句想到,实际上dl.onclick的值是toggleDl()这个函数的返回值,即toggleDl()已经运行。那么,为什么不返回一个函数给dl.onclick呢?在返回的函数里面使用外壳函数传递进来的参数就好了。想到这里,小兴奋的试了一下,果然可行,代码如下: function toggleDl(test){
return function(){ alert(test); //…… } } 事件操作的逻辑放在被返回的那个函数体中执行,而参数则是在包装它的函数中传递,在这个例子中就是test作为参数。而绑定事件的语句就可以写成如下的样子: dl.onclick=toggleDl(12);//这样就把alert(test)这个函数作为返回值了 返回的是alert(12); //dl.onclick=toggleDl();这个函数的返回值赋给了dl.onclick 这样dl被点击时就会正确的传递参数了。
再如: function beginAdding(a) { a *= 5; return function finishAdding(b){ alert(a+b); } } var add = beginAdding(10);//finishAdding(b){alert(a+b);} add(20); |