因为前一个程序现在有问题,所以需要修改,但是他的换图片js代码我不能完全理解透彻.只能看懂皮毛。
所以寻求js翻译专家
这是页面代码,用到js方法的就这里。<div id="menu_list_box">
<ul id="menu_list">
<li><a href="/list/?1"><img runat="server" src="images/menu/dh.gif" name="dh" id="dh" onmouseover="MM_swapImage('dh','','images/menu/dh_o.gif',1)" onmouseout="MM_swapImgRestore()" /></a></li>
<li><a href="/list/?2"><img runat="server" src="images/menu/kj.gif" name="kj" id="kj" onmouseover="MM_swapImage('kj','','images/menu/kj_o.gif',1)" onmouseout="MM_swapImgRestore()" /></a></li>
<li><a href="/list/?3"><img runat="server" src="images/menu/wz.gif" name="wz" id="wz" onmouseover="MM_swapImage('wz','','images/menu/wz_o.gif',1)" onmouseout="MM_swapImgRestore()" /></a></li>
<li><a href="/list/?4"><img runat="server" src="images/menu/ysh.gif" name="ysh" id="ysh" onmouseover="MM_swapImage('ysh','','images/menu/ysh_o.gif',1)" onmouseout="MM_swapImgRestore()" /></a></li>
<li><a href="/list/?5"><img runat="server" src="images/menu/cm.gif" name="cm" id="cm" onmouseover="MM_swapImage('cm','','images/menu/cm_o.gif',1)" onmouseout="MM_swapImgRestore()" /></a></li>
<li><a href="/list/?7"><img runat="server" src="images/menu/sj.gif" name="sj" id="sj" onmouseover="MM_swapImage('sj','','images/menu/sj_o.gif',1)" onmouseout="MM_swapImgRestore()" /></a></li>
<li><a href="/list/?8"><img runat="server" src="images/menu/ys.gif" name="ys" id="ys" onmouseover="MM_swapImage('ys','','images/menu/ys_o.gif',1)" onmouseout="MM_swapImgRestore()" /></a></li>
<li><a href="/list/?9"><img runat="server" src="images/menu/bz.gif" name="bz" id="bz" onmouseover="MM_swapImage('bz','','images/menu/bz_o.gif',1)" onmouseout="MM_swapImgRestore()" /></a></li>
<li><a href="/list/?10"><img runat="server" src="images/menu/rj.gif" name="rj" id="rj" onmouseover="MM_swapImage('rj','','images/menu/rj_o.gif',1)" onmouseout="MM_swapImgRestore()" /></a></li>
<li><a href="/kehu/"><img runat="server" src="images/menu/kh.gif" name="kh" id="kh" onmouseover="MM_swapImage('kh','','images/menu/kh_o.gif',1)" onmouseout="MM_swapImgRestore()" /></a></li>
<li><a href="/about/"><img runat="server" src="images/menu/wm.gif" name="wm" id="wm" onmouseover="MM_swapImage('wm','','images/menu/wm_o.gif',1)" onmouseout="MM_swapImgRestore()" /></a></li>
</ul>
</div> 这里是JS文件,就这里面的jsfunction MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}function MM_swapImgRestore() { //v3.0
var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document;
if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}function MM_swapImage() { //v3.0
var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array;
for(i=0;i<(a.length-2);i+=3)
if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
从最下面的方法开始看,i,j为0,a=该方法.arguments。(就是根据ID获取图片的SRC吧,我查的,应该没理解错吧),然后new个数组。从for循环下面就开始看不太懂了。
所以寻求js翻译专家
这是页面代码,用到js方法的就这里。<div id="menu_list_box">
<ul id="menu_list">
<li><a href="/list/?1"><img runat="server" src="images/menu/dh.gif" name="dh" id="dh" onmouseover="MM_swapImage('dh','','images/menu/dh_o.gif',1)" onmouseout="MM_swapImgRestore()" /></a></li>
<li><a href="/list/?2"><img runat="server" src="images/menu/kj.gif" name="kj" id="kj" onmouseover="MM_swapImage('kj','','images/menu/kj_o.gif',1)" onmouseout="MM_swapImgRestore()" /></a></li>
<li><a href="/list/?3"><img runat="server" src="images/menu/wz.gif" name="wz" id="wz" onmouseover="MM_swapImage('wz','','images/menu/wz_o.gif',1)" onmouseout="MM_swapImgRestore()" /></a></li>
<li><a href="/list/?4"><img runat="server" src="images/menu/ysh.gif" name="ysh" id="ysh" onmouseover="MM_swapImage('ysh','','images/menu/ysh_o.gif',1)" onmouseout="MM_swapImgRestore()" /></a></li>
<li><a href="/list/?5"><img runat="server" src="images/menu/cm.gif" name="cm" id="cm" onmouseover="MM_swapImage('cm','','images/menu/cm_o.gif',1)" onmouseout="MM_swapImgRestore()" /></a></li>
<li><a href="/list/?7"><img runat="server" src="images/menu/sj.gif" name="sj" id="sj" onmouseover="MM_swapImage('sj','','images/menu/sj_o.gif',1)" onmouseout="MM_swapImgRestore()" /></a></li>
<li><a href="/list/?8"><img runat="server" src="images/menu/ys.gif" name="ys" id="ys" onmouseover="MM_swapImage('ys','','images/menu/ys_o.gif',1)" onmouseout="MM_swapImgRestore()" /></a></li>
<li><a href="/list/?9"><img runat="server" src="images/menu/bz.gif" name="bz" id="bz" onmouseover="MM_swapImage('bz','','images/menu/bz_o.gif',1)" onmouseout="MM_swapImgRestore()" /></a></li>
<li><a href="/list/?10"><img runat="server" src="images/menu/rj.gif" name="rj" id="rj" onmouseover="MM_swapImage('rj','','images/menu/rj_o.gif',1)" onmouseout="MM_swapImgRestore()" /></a></li>
<li><a href="/kehu/"><img runat="server" src="images/menu/kh.gif" name="kh" id="kh" onmouseover="MM_swapImage('kh','','images/menu/kh_o.gif',1)" onmouseout="MM_swapImgRestore()" /></a></li>
<li><a href="/about/"><img runat="server" src="images/menu/wm.gif" name="wm" id="wm" onmouseover="MM_swapImage('wm','','images/menu/wm_o.gif',1)" onmouseout="MM_swapImgRestore()" /></a></li>
</ul>
</div> 这里是JS文件,就这里面的jsfunction MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}function MM_swapImgRestore() { //v3.0
var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document;
if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}function MM_swapImage() { //v3.0
var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array;
for(i=0;i<(a.length-2);i+=3)
if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
从最下面的方法开始看,i,j为0,a=该方法.arguments。(就是根据ID获取图片的SRC吧,我查的,应该没理解错吧),然后new个数组。从for循环下面就开始看不太懂了。
onmouseover="MM_swapImage('dh','','images/menu/dh_o.gif',1)" 改变图片的js方法和事件,共4个参数function MM_swapImage() { //v3.0
var i,j=0,x,a=MM_swapImage.arguments; //a是获取传过来的参数,是一个array数组
document.MM_sr=new Array;
for(i=0;i<(a.length-2);i+=3)//a.length-2 也就是2个
if ((x=MM_findObj(a[i]))!=null){//这里主要就是通过上面的参数a数组中的id,如:dh是一个id来获取dh这个对象;如果它部位null是才做下面的
document.MM_sr[j++]=x; //将上面得到的对象x,存储到mm_sr这个array中
if(!x.oSrc) //如果x=MM_findObj通过id=dh得到的对象没有oSrc(null、undefined、!true)就执行下面的代码
x.oSrc=x.src; //得到的对象的src赋值给x对象中的一个oSrc属性
x.src=a[i+2];//取到参数a也就是传过来的参数MM_swapImage.arguments,中的i+2个
//此时i=0,i+2也就是2个,正是MM_swapImage('dh','','images/menu/dh_o.gif',1)" 中的'images/menu/dh_o.gif'值
}
}
哈哈 哥们其实...你可以不必强调我差的,我会害羞的。~(@^_^@)~ ^_^不得不说:4L你的头像很吸引人的眼球...
function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; //他这里的d参数可以不传也行是吧,如果(!d)意思就是不为true,为0或者NULL,那么d=document是什么意思,表示d可以是0、NULL这种任意类型吗?
if((p=n.indexOf("?"))>0&&parent.frames.length) {//该方法在下面调用时就传了一个ID参数,比如说是dh,那indexOf("?")结果p=-1,但是不明白他后面这个parent.frames.length是什么意思,页面中没有用到frames的地方啊
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];//因为上面d=document不知道是什么意思,所以这里也不懂。x=d[N]&&d.all。后面循环里的d.forms粗略了解应该是根据ID获取他的属性吧。
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}
麻烦hoojo了,谢谢
//欲加载图片,在图片show出来之前进行下载并缓存,(d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];)
function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}function MM_swapImgRestore() { //v3.0
var i,x,a=document.MM_sr; //MM_sr是个全局数组,在MM_swapImage中声明的,用来存储img标记的初始图片地址
//从MM_sr还原各个图片的历史图片
for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
//获取dom对象的方法
function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document;
if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}function MM_swapImage() { //v3.0
var i,j=0,x,a=MM_swapImage.arguments; //arguments是这个方法的参数数组,例如'dh','','images/menu/dh_o.gif',1 (length=4)
document.MM_sr=new Array; //声明全局数组,由下面看出里面存放的是自定义对象,存在自定义属性oSrc
//这个循环只会循环1次,获得索引为0,根据索引0的值 即'dh' 获得dom对象,将dom的src存入全局数组MM_sr中的J++索引对象上,并改变dom对象的src为参数数组的第2位 即'images/menu/dh_o.gif'
for(i=0;i<(a.length-2);i+=3)
if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
但是能仔细说下获取dom的那个方法吗,那个看不大懂。尤其是d=document和parent.frames.(页面中根本没有frames)
这正是因为这些代码是DW自动生成的(一看前缀是MM_的基本就是了),所以它根本不知道你这个页面是什么情况,只按照可能最复杂的情况来写,这样可以适应包括复杂情况在内的各种页面嘛。所以自动生成代码,好处是简便,缺点是针对性不强,为追求普适性而牺牲了执行效率。
var picurl="";
function swapImage(imgobj) {
picurl=imgobj.src;
imgobj.src=picurl.split(".")[0]+"_o."+picurl.split(".")[1];
}
function ImgRestore(imgobj) {
imgobj.src=picurl;
}
</script>
<div id="menu_list_box">
<ul id="menu_list">
<li><a href="/list/?1"><img runat="server" src="images/menu/dh.gif" name="dh" id="dh" onmouseover="swapImage(this)" onmouseout="ImgRestore(this)" /></a></li>
<li><a href="/list/?2"><img runat="server" src="images/menu/kj.gif" name="kj" id="kj" onmouseover="swapImage(this)" onmouseout="ImgRestore(this)" /></a></li>
<li><a href="/list/?3"><img runat="server" src="images/menu/wz.gif" name="wz" id="wz" onmouseover="swapImage(this)" onmouseout="ImgRestore(this)" /></a></li>
<li><a href="/list/?4"><img runat="server" src="images/menu/ysh.gif" name="ysh" id="ysh" onmouseover="swapImage(this)" onmouseout="ImgRestore(this)" /></a></li>
<li><a href="/list/?5"><img runat="server" src="images/menu/cm.gif" name="cm" id="cm" onmouseover="swapImage(this)" onmouseout="ImgRestore(this)" /></a></li>
<li><a href="/list/?7"><img runat="server" src="images/menu/sj.gif" name="sj" id="sj" onmouseover="swapImage(this)" onmouseout="ImgRestore(this)" /></a></li>
<li><a href="/list/?8"><img runat="server" src="images/menu/ys.gif" name="ys" id="ys" onmouseover="swapImage(this)" onmouseout="ImgRestore(this)" /></a></li>
<li><a href="/list/?9"><img runat="server" src="images/menu/bz.gif" name="bz" id="bz" onmouseover="swapImage(this)" onmouseout="ImgRestore(this)" /></a></li>
<li><a href="/list/?10"><img runat="server" src="images/menu/rj.gif" name="rj" id="rj" onmouseover="swapImage(this)" onmouseout="ImgRestore(this)" /></a></li>
<li><a href="/kehu/"><img runat="server" src="images/menu/kh.gif" name="kh" id="kh" onmouseover="swapImage(this)" onmouseout="ImgRestore(this)" /></a></li>
<li><a href="/about/"><img runat="server" src="images/menu/wm.gif" name="wm" id="wm" onmouseover="swapImage(this)" onmouseout="ImgRestore(this)" /></a></li>
</ul>
</div>
那个a标签要是要是设css的还能设点击后颜色一样,但是图片的话这里要怎么弄.
大概知道有这么一个方法就可以了,不要去记住。以后用的时候查下chm文档就知道用了