it技术指南:www.itedus.com
  • 信息订阅

IT指南

  • TNT五分钟问卷赢IPOD
  • 贝塔斯曼
  • 广告联盟
  • No pay, More gain!
  • 单价15元-网络广告平台
  • 注册阿里妈妈赚广告费
  • 首页
  • 新闻资讯
  • 网页制作
  • 软件使用
  • 操作系统
  • 软件编程
  • 网络编程
  • 图象处理
  • 网站欣赏
  • 数据库
  • 认证考试
  • 站长知识
正在浏览栏目导航:首页 > 网页制作 > Javascript >

完美解决一个事件激活多个函数(2)

时间:2007-11-13 12:19:12   来源:it技术网  作者:it技术网

可是在一个页面中,我们可能会遇到有多个事件要激活多个函数,每个事件都要写一遍那样的代码,显然不是好主意。聪明的读者可能已经想到,应该写成一个函数activeMore(),哪个事件要激活多个函数的,直接就用activeMore()就行。

  但是在上一部分中我们把事件的toString()当作JavaScript脚步本运行,实际上是运行一段函数代码,如果写成一个函数时还是用这个方法,即为函数中嵌套函数,将会出现意想不到的错误。 于是我们写成函数时把事件的toString()中的“function anonymous()”字符去掉,运行时就不是一个函数,而是函数内部的代码了。另外我们还可以定义先激活原有的函数还是先激活现在要激活的函数。最后为了方便使用,我们把事件和要激活的函数放在一起作为参数,写成以下函数:


function activeMore(event_function,order){
// order 为负数时先激活myFunction再激活前面的脚本
var isSn=event_function.indexOf("=",0);
var myEvent=event_function.substring(0,isSn);
var myFunction=event_function.substring(isSn+1,event_function.length);
var prefunction="";
if(eval(myEvent)) prefunction= eval(myEvent).toString().replace('function anonymous()',"");

if(order<0) eval(myEvent+"=new Function(myFunction+'//n'+prefunction)");
else eval(myEvent+"=new Function(prefunction+'//n'+myFunction)");
}

  以上函数我们先把参数“event_function”进行字符串分析,得到事件(myEvent)和要激活的函数(myFunction),然后取得原来激活的函数(preFunction),最后把多个函数放在一起激活。因为我们只是把“function anonymous()”去掉,preFunction字符串的两端会带有“{ }”号,但并不影响程序的运行。

  下面我们举一个实际应用的例子:使网页中所有的链接都不出现虚线框。

  为了达到这个目的,我们给所有的链接的onfocus事件添加一个激活函数“blur()”。为了保证一些链接原有的onfocus事件激活函数仍然有效,我们要用一次activeMore()函数;为了能够得到所有的链接,我们用到document.body的onload事件,又要用一次activeMore()函数:

//使链接不出现虚线框:
function blurLinks(){
for(i=0;i activeMore("document.links["+i+"].onfocus=if(this.blur)this.blur()",-1);
}
}
activeMore("document.body.onload=blurLinks()");

  链接的onfocus事件(document.links[i].onfocus)要激活的函数是“if(this.blur)this.blur()”,参数order的值为-1表先激活该函数再激活它们原有的函数;document.body.onload事件要激活的函数是“blurLinks()”,参数order的值省略(或为非负数)表先激活它原有的函数再激活“blurLinks()”。

  从例子中可以看到,这个函数用起来还挺简单吧。有了activeMore()函数,无论多少个事件要激活多个函数,都可以用同样的语法解决了!

关键字:完美
关闭此页
上一篇:图片下拉选择器的制作
下一篇:连续滚动的制作

相关文章

     ·完美解决一个事件激活多个函数  (2007-11-13 12:19:09)
     ·js控制excel打印完美解决方案  (2007-11-13 12:17:42)
     ·Linux系统下架设CS服务器的完美方法  (2007-09-09 22:43:00)
     ·打造完美Linux系统:疑难杂症的解决  (2007-09-09 22:42:30)
     ·性能的完美提升 细看VistaRC1五大改进  (2007-08-29 15:31:15)
     ·完美解决一个事件激活多个函数  (2007-08-25 23:49:51)
     ·完美解决一个事件激活多个函数(2)  (2007-08-25 23:49:48)
     ·js控制excel打印完美解决方案  (2007-08-25 23:49:35)
本栏目推荐

排行榜

  • 1十一、JSP及语法概要
  • 2十、会话状态
  • 3九、处理Cookie
  • 4javascript实例教程(8) 利用j
  • 5javascript实例教程(7) 利用j
  • 6javascript实例教程(6) 在一个表单
  • 7javascript实例教程(5) 利用j
  • 8javascript实例教程(3) 创建折叠式

最新信息

  • 十一、JSP及语法概要
  • 十、会话状态
  • 九、处理Cookie
  • javascript实例教程(8) 利用ja
  • javascript实例教程(7) 利用ja
  • javascript实例教程(6) 在一个表单
  • javascript实例教程(5) 利用ja
  • javascript实例教程(3) 创建折叠式
关于站点 - 广告服务 - 联系我们 - 返回顶部
Copyright © 2007 www.itedus.com . All rights reserved.QQ群:8814225
如果碰到相关技术问题可以联系我们,原创相关问题请与站长及时联系.鄂ICP备07005792号