1

我有一个已经运行了一段时间的 Visual Studio 2005 站点。我在这个网站上有一张图片 (.JPG),我认为我需要对其应用一些 JavaScript 或其他东西?

基本上我在 12 月份有 25 张图片,而不是每天进入网站将这张图片更改为另一张图片,我希望能够通过代码自动完成此操作。

我有一些 .NET 技能,但我认为我可能需要使用 JavaScript 来完成这项任务。谁能指出我正确的方向或为我提供一些可以帮助的示例代码?

4

2 回答 2

1

我认为最简单的方法是将所有图像重命名为“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

于 2012-11-16T14:43:40.870 回答
1

我这样做的方式是使用服务器端代码,但我认为每个人展示一个 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#) 吗?)无论客户端的情况如何。

我希望这有帮助 :)

于 2012-11-16T15:12:19.480 回答