我有一个已经运行了一段时间的 Visual Studio 2005 站点。我在这个网站上有一张图片 (.JPG),我认为我需要对其应用一些 JavaScript 或其他东西?
基本上我在 12 月份有 25 张图片,而不是每天进入网站将这张图片更改为另一张图片,我希望能够通过代码自动完成此操作。
我有一些 .NET 技能,但我认为我可能需要使用 JavaScript 来完成这项任务。谁能指出我正确的方向或为我提供一些可以帮助的示例代码?
我有一个已经运行了一段时间的 Visual Studio 2005 站点。我在这个网站上有一张图片 (.JPG),我认为我需要对其应用一些 JavaScript 或其他东西?
基本上我在 12 月份有 25 张图片,而不是每天进入网站将这张图片更改为另一张图片,我希望能够通过代码自动完成此操作。
我有一些 .NET 技能,但我认为我可能需要使用 JavaScript 来完成这项任务。谁能指出我正确的方向或为我提供一些可以帮助的示例代码?
我认为最简单的方法是将所有图像重命名为“December1.jpg”、“December2.jpg”、“December3.jpg”等。然后在服务器端你会有这个:
<img src="/path/to/images/December<%=DateTime.Now.Day%>.jpg"/>
这只会将月份中的日期添加到您的图像名称中。有很多更好的方法可以做到这一点,但对于一次性交易,没有比这更简单的了。
编辑:您还可以为您的图像添加“如果存在”,这样在 26 日您就不会得到 404 图像。像这样的东西:
更改您的图像以添加一个 id 并将其默认为隐藏:
<img id="dayImage" runat="server" Visibility="false" src="/path/to/images/December<%=DateTime.Now.Day%>.jpg"/>
然后在后面的代码上:
if (File.Exists(@"C:\path\to\images\December" + DateTime.Now.Day + ".jpg"))
{
//this will show the image if it exists on the disk
dayImage.Visibility = true;
}
有关更多信息,请访问:http: //www.dotnetperls.com/file-exists
我这样做的方式是使用服务器端代码,但我认为每个人展示一个 JavaScript 示例会更简单。虽然可以采取多种方法来完成您的要求,但一种简单的方法是将所有图像文件的 url 作为字符串存储在数组中,如下所示:
var urlPath = new Array();
urlPath[0] = "Leave Empty"; //Because there will never be a 0th day of any month...
urlPath[1] = "/Images/nameOfPic1.jpg";
urlPath[2] = "/Images/nameOfPic2.jpg";
urlPath[3] = "/Images/nameOfPic3.jpg";
然后通过抓取日期循环浏览它们:
var myDate = new Date();
然后根据 getDate() 获取图像的路径:
var currentDate = myDate.getDate();
document.getElementById("imgElement").src=urlPath[currentDate];
然后(取决于给定月份的照片数量)您可以根据数字日期分配新照片。当然,使用此示例,将图片数量等于一个月中的最大天数 (31) 以便根据需要调用它们是有意义的。这种方式会在某些月份(但是少于 31 天的月份)遗漏某些图片。如果您想简单地循环浏览它们,则完全按照上面的方法进行操作,但添加此语句而不是最后两个语句(此示例假设您始终有 25 张图片):
var currentDate = myDate.getDate();
if(currentDate > 25)
{
currentDate -= 25;
document.getElementById("imgElement").src=urlPath[currentDate];
}
else
{
document.getElementById("imgElement").src=urlPath[currentDate];
}
这并不完全完美,因为每个新月的开始都会重新开始图片列表,并且有些图片会比其他图片更多。我不确定是否有更好的方法来做到这一点,但如果您的客户不太挑剔,它应该可以完成工作。不过,我个人还是会使用服务器端代码并设置一个全局的应用程序变量(适用于所有人),并直接处理它并记住 AppState 变量(很明显我使用的是 WebMatrix (C#) 吗?)无论客户端的情况如何。
我希望这有帮助 :)