我刚刚开始接触JavaScript,网上有一段设置事件驱动的方法如下
var addEventHandler = function(obj, type, func) {
if (!obj) { return; }
var doOn = function(o) {
if (o.addEventListener) { o.addEventListener(type, func, false); }
else if (o.attachEvent) { o.attachEvent("on" + type, func); }
else { o["on" + type] = func; }
}
var IsArray = function(v) {
try {
var a = v[0];
return typeof (a) != "undefined";
}
catch (e) {
return false;
}
}
if (obj.tagName != "SELECT" && IsArray(obj)) {
for (var i = 0, oLen = obj.length; i < oLen; i++) {
doOn(obj[i], type.func);
}
}
else {
doOn(obj);
}
}
该方法的大致意思,将对象obj的特定事件type与特定的方法func进行映射
但是
if (obj.tagName != "SELECT" && IsArray(obj)) {
for (var i = 0, oLen = obj.length; i < oLen; i++) {
doOn(obj[i], type.func);
}
}
这一段的用途不太明白
doOn(obj[i], type.func);应该怎么理解,type.func这个参数有什么作用
var addEventHandler = function(obj, type, func) {
if (!obj) { return; }
var doOn = function(o) {
if (o.addEventListener) { o.addEventListener(type, func, false); }
else if (o.attachEvent) { o.attachEvent("on" + type, func); }
else { o["on" + type] = func; }
}
var IsArray = function(v) {
try {
var a = v[0];
return typeof (a) != "undefined";
}
catch (e) {
return false;
}
}
if (obj.tagName != "SELECT" && IsArray(obj)) {
for (var i = 0, oLen = obj.length; i < oLen; i++) {
doOn(obj[i], type.func);
}
}
else {
doOn(obj);
}
}
该方法的大致意思,将对象obj的特定事件type与特定的方法func进行映射
但是
if (obj.tagName != "SELECT" && IsArray(obj)) {
for (var i = 0, oLen = obj.length; i < oLen; i++) {
doOn(obj[i], type.func);
}
}
这一段的用途不太明白
doOn(obj[i], type.func);应该怎么理解,type.func这个参数有什么作用
解决方案 »
- 在HTML中设定没做超链接的flash的链接
- 获取并将另一页面的数组内容加入数据库
- javascript用什么工具开发啊?他与html有什么本质区别啊?
- [求助]50求一个JS循环的问题
- window.location与document.location的区别真的有可读不可写的问题吗?
- 一个关于checkbox控制embed的小问题,应该很简单
- 如何获得相同ID的sourceIndex啊?程序后台被人写死了,只能改脚本了,惨!!!
- 求助,用了<pre></pre>就无法实现自动换行了?
- 在js里,有没有延迟时间之类的函数?
- 有谁对Dreamweaver很熟呀?
- vs2010中js的bug?
- javascript 如何知道方可的浏览记录和收藏夹内容
var doOn = function(o) {
if (o.addEventListener) { o.addEventListener(type, func, false); }
else if (o.attachEvent) { o.attachEvent("on" + type, func); }
else { o["on" + type] = func; }
}
举个例子addEventHandler使用的例子
var a = document.getElementById("oval1");
var mouseout1 = function (e) {
var tar = e.srcElement;
tar.style.backgroundColor = "";
}
addEventHandler(a, 'mouseout',mouseout1 );mouseout IE中onmouseout事件的事件名称
mouseout1 onmouseout执行时的方法
上面这句楼主是不是写错了??
改为doOn(obj[i], type,func)才说的通
(因为type传入时只是个string,所以type.func直接调用应该会undefined)
但是如果是写错了
doOn(obj[i])和doOn(obj[i], type,func)有区别吗?
为什么要多此一举
doOn定义时也只有一个参数?