这是功能:
function LoadBanner(img) {
var d = new Date();
var Today = d.getDate();
var Month = d.getMonth();
Month++; //Months are 0 based
var src;
if (Month === 8 && (Today >= 1 && Today <= 17)) {
src = "banner1.jpg";
} else if (Month === 8 && (Today >= 18 && Today <= 31)) {
src = "banner3.jpg";
} else if (Month === 9 && (Today >= 1 && Today <= 7)) {
src = "banner2.jpg";
} else if (Month === 9 && (Today >= 8 && Today <= 14)) {
src = "banner5.jpg";
} else if (Month == 9 && (Today >= 15 && Today <= 21)) {
src = "banner4.jpg";
} else if (Month == 9 && (Today >= 22 && Today <= 28)) {
src = "banner6.jpg";
} else if (Month == 9 && (Today >= 29 && Today <= 30)) {
src = "banner7.jpg";
} else {
document.getElementById("bannerdiv").style.display = "none";
}
img.src = src;
}
这是HTML:
<div class="banner" id="bannerdiv">
<!--<img id="Logo" src="banner2.jpg" alt="KnowledgeBase" width="100%" height="100%" onload="LoadBanner(this)" />-->
<img id="Logo" src="banner1.jpg" alt="KnowledgeBase" width="100%" height="100%"" />
</div>
注意:当我在onLoad
中调用该函数时,IE 8中会抛出错误,但在当前版本的IE和Chrome中工作正常。我读过一些关于递归调用函数超过12次的内容可能会导致错误...或者为IE请求太多内存但是我不认为我在这里做任何事情。
答案 0 :(得分:2)
您正在更改图像的来源,强制它重新加载并再次触发onload。
可能最快的解决方法是:
if (img.src != src) {
img.src = src;
}
如果src没有改变,避免重新加载。我猜测后来的浏览器已经内置了这个检查,但即使是那些也会运行你的onload
处理程序两次。