您的位置:首页 > Web前端 > JavaScript

JavaScript的奇怪问题

2011-06-21 17:34 162 查看

JavaScript的奇怪问题

最近做一个网站,需要用到js做一些效果,发现了一些问题。
问题一:
使用CSS定义a标记时,有如下格式:
.header a:link {
color:#FFFFFF;
text-decoration: none;
}
.header a:visited {
color:#FF0000;
}
.header a:hover {
color:#00CC66;
text-decoration: underline;
}

正常链接白色,不带下划线,访问过的红色,鼠标划过时绿色,有下划线。但是呢,这种实现方式有一种缺点,那就是浏览器存在缓存,它总会记住访问过的链接。于是下一次打开时,就会仍然呈现红色。不知有什么好和解决办法??求教。
问题二:
用Date取年的时候,采取getYear()方法在IE6中正常显示,但在IE8中不正常。
后来查了W3C才知道,现在getYear()已被getFullYear()取代。取年时最好用后者。
问题三:
关于dw自动产生的一些更换图片脚本。例如:存在两张图片,一张是g1.png,另一张是g2.png。我想通过修改img标记的src来达到更换图片的效果,让img的onmouseover=“changeImg(this)”和onmouseout=“recoverImg(this)”.其中两个函数体如下:
function changeImg(myimg)
{
myimg.src="g1.png";
}
function recoverImg(myimg)
{myimg.src="g2.png"}
但问题随之而来了。这样写在IE中正常在FireFox中不好用。不知道是不是因为IMG前面有TD标签包围还是其它原因。
这后,我又在极简的情况下,也就是整个页面只有IMG的情况下做了测试,结果却表明这样做是可以的,FF也支持这种变换。于是就不知道是为什么,可能是什么影响到了脚本的解释。最后,是靠DW自己生成的一些不明白的代码解决了这个问题,谁能为我详细解释一下这些代码?实在是看不明白,不知道MM_sr这个变量是怎么来的,莫名其妙:
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_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_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
)&&d.all) x=d.all
; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i]
;
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];}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: