选择显示字体大小

javascript实例 一个事件激活多个函数(2)


  可是在一个页面中,我们可能会遇到有多个事件要激活多个函数,每个事件都要写一遍那样的代码,显然不是好主意。聪明的读者可能已经想到,应该写成一个函数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+&quot;=new function(myfunction+'\\n'+prefunction)&quot;);
else eval(myevent+&quot;=new function(prefunction+'\\n'+myfunction)&quot;);
}

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

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

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

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

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

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

  


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons