2011-11-23 41 views
0

我想要做的是根据月份和日期更改着陆页图像。麻烦的是,当我实现这个代码,我得到一个错误,下面的代码:基于日期更改图片源

function kblogo() { 
var d = new Date(); 
var Today = d.getDate(); 
var Month = d.getMonth(); 
var logoSrc; 
if (Month == 10 && (Today >= 23 && Today <= 26)) { 
    logoSrc = "Images/doodles/KBThanksgiving.png"; 
} else if (Month == 11 && (Today >= 23 && Today <= 26)) { 
    logoSrc = "Images/doodles/KBHolidays.png"; 
} else if ((Month == 11 && Today >= 30) || (Month == 0 && Today <= 2)) { 
    logoSrc = "Images/doodles/KBNewYear.png"; 
} else if (Month == 6 && (Today >= 3 && Today <= 5)) { 
    logoSrc = "Images/doodles/KBJuly4.png"; 
} else { 
    logoSrc = "Images/KB.png"; 
} 
document.getElementById("kbLogo").src = logoSrc; 
} 

只是改变了代码,这一点,我会在短期内测试它。任何想法都让我知道。

我已经通过一些不同的验证程序运行了它,发现了不同的东西并修复了它们,但它像我得到的那样是固定的,它在我实现时仍然崩溃了IE和FF。

<img id="Logo" src="Images/default.png" alt="KnowledgeBase" width="75%" onload="logo()" /> 

以上是要求img标签

+3

请*总是*指定你得到什么错误,并在哪里 –

+0

你可以把你的HTML代码? – Galled

+0

您应该只调用一次“getElementById()”,并将该参考保存在一个变量中。让所有这些电话都很浪费,而且容易出错 - 其中一个电话实际上使用的字符串与其他字符串不同。 – Pointy

回答

0

您的标志功能循环 - 也无需加载默认如果默认已经加载

DEMO

<img id="Logo" src="Images/default.png" alt="KnowledgeBase" width="75%" onload="logo(this)" /> 


function logo(img) { 
    if (img.src.indexOf('default')==-1) return; // already changed 
    var d = new Date(); 
    var Today = d.getDate(); 
    var Month = d.getMonth(); 
    var src; 
    if (Month === 10 && (Today >= 23 && Today <= 26)) { 
    src = "Images/doodles/blah1.png"; 
    } else if (Month === 11 && (Today >= 23 && Today <= 26)) { 
    src = "Images/doodles/blah2.png"; 
    } else if ((Month === 11 && Today >= 30) || (Month === 0 && Today <= 2)) { 
    src = "Images/doodles/blah3.png"; 
    } else if (Month === 6 && (Today >= 3 && Today <= 5)) { 
    src = "Images/doodles/blah4.png"; 
    } 
    img.src=src; 
} 
+0

我已经实现了这一点,因为你已经在这里,由于某种原因,它仍然无法改变图像。我想知道它是否与wordpress页面内实现的事实有关。我已经使用其他的JavaScript函数来做这样的事情,但是这个特定的函数拒绝运行。 – user1062599

+0

适合我:http://jsfiddle.net/mplungjan/gLffJ/ – mplungjan

+0

我把它全部拿回来!这个解决方案可以很好地工作,但对于那些不知道wordpress的人来说,不会让你把javascript放在帖子中,它需要在头文件中应用(除非有一些插件允许我不知道的所有事情发生) )。一旦代码在标题中,它就可以正常工作。 – user1062599

0

第一。 您的<img>已有id="Logo",但在您编写的代码中document.getElementById("kbLogo")

二。 您的<img>src="mages/default.png",但在您使用的代码中"Images/default.png";

+0

哈哈我试图编辑的东西,所以我没有暴露任何使用的变量,但我睡眠不足让我修复该问题 – user1062599

0

错误是什么?

看到你有'Logo'和'kbLogo'图像ID。 不是很重要,但是,为什么使用===操作数代替==?

记得月= 10月11月,而不是10月。

我测试了下一个代码和我的作品:

var d = new Date(); 
var Today = d.getDate(); 
var Month = d.getMonth(); 
if (Month == 10 && (Today >= 23 && Today <= 26)) { 
    console.log("Images/doodles/blah1.png"); 
} else if (Month == 11 && (Today >= 23 && Today <= 26)) { 
    console.log("Images/doodles/blah2.png"); 
} else if ((Month == 11 && Today >= 30) || (Month == 0 && Today <= 2)) { 
    console.log("Images/doodles/blah3.png"); 
} else if (Month == 6 && (Today >= 3 && Today <= 5)) { 
    console.log("Images/doodles/blah4.png"); 
} else { 
    console.log("Images/default.png"); 
} 
+0

===这是严格的等号运算符,只有返回布尔值,如果两个操作数都是相同和相同的类型 – user1062599

+0

@neil:date.getXXX返回整数,所以===可以安全地使用 – mplungjan