不了解JavaScript代码中的回调函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了不了解JavaScript代码中的回调函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2195字,纯文字阅读大概需要4分钟。
内容图文
![不了解JavaScript代码中的回调函数](/upload/InfoBanner/zyjiaocheng/656/09686d1139bd4560b7c316cb9a4cf7c2.jpg)
我正在使用一本Java脚本书,希望使用回调函数创建一些菜单,并巧妙地使用事件处理.我有一些看起来像这样的代码:
window.onload = InitPage;
function InitPage(){
function hoverMenu(e, oTarget){
var isChildOf = function(pNode, cNode){
//alert("value of pNode:" + pNode + " value of cNode" + cNode);
if(pNode === cNode){
return true;
}
while (cNode && cNode !== pNode){
cNode = cNode.parentNode;
}
return cNode === pNode;
}
//alert(e.srcElement);
var target = e.target;
if(!oTarget){
oTarget = target;
}
var relTarg = e.fromElement;
if(isChildOf(oTarget, relTarg) == false){
alert("mouse enters");
}
}
function unhoverMenu(e, oTarget){
var isChildOf = function(pNode, cNode){
//alert("value of pNode:" + pNode + " value of cNode" + cNode);
if(pNode === cNode){
return true;
}
while (cNode && cNode !== pNode){
cNode = cNode.parentNode;
}
return cNode === pNode;
}
//alert(e.srcElement);
var target = e.target;
if(!oTarget){
oTarget = target;
}
var relTarg = e.toElement;
if(isChildOf(oTarget, relTarg) == false){
alert("mouse leaves");
}
}
var ul_menu = document.getElementById("ul_grabbed");
ul_menu.addEventListener("mouseover", function(e1){return function(e){hoverMenu(e, e1)}}(ul_menu),true);
ul_menu.addEventListener("mouseout", function(e1){return function(e){unhoverMenu(e, e1)}}(ul_menu),true);
我已经遍历了代码.本质上发生的是鼠标进入UL元素或其子级时的触发事件,以及离开该UL或其子级时的触发事件.除了最后显示的内容,我无法理解所有内容:
ul_menu.addEventListener("mouseover", function(e1){return function(e){hoverMenu(e, e1)}}(ul_menu),true);
ul_menu.addEventListener("mouseout", function(e1){return function(e){unhoverMenu(e, e1)}}(ul_menu),true);
我对这些行的理解是,我们正在使用两个函数向UL元素添加事件,其中一个函数是从第一个函数内部返回的,它将在事件的捕获阶段触发.我的问题是为什么我需要在这些函数的末尾(ul_menu),并且在存在e1和e的情况下,这实际上意味着在这里触发了两个不同的事件吗?如果有人能向我解释最后两行,我将不胜感激.
解决方法:
这是一个自执行函数,它返回一个函数,并且是将额外参数传递到事件处理程序中的一种方式.如果采用外层-
function(e1){ ... }(ul_menu)
-然后您会立即看到{…}容器中的内容,它是:
function(e) { hoverMenu(e, ul_menu); }
这就是事件处理程序.因此,e是事件,但是现在额外的参数(在这种情况下为“ target”)ul_menu传递给您的“ hoverMenu”处理程序.
内容总结
以上是互联网集市为您收集整理的不了解JavaScript代码中的回调函数全部内容,希望文章能够帮你解决不了解JavaScript代码中的回调函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。