我需要在coldfusion主页上每24小时随机更改图像及相关标题。我有大约50个图像和标题,我不想每天手动执行此操作。你能指点我任何javascript源代码的例子吗?感谢。
我还希望能够使用灯箱放大图片。有人可以告诉我如何修改代码来做到这一点吗?
答案 0 :(得分:2)
我会将其作为服务器端解决方案。
在Application范围中创建一个带有时间戳的对象(或结构)会很容易。加载页面时,将时间戳与当前时间进行比较。
如果不到24小时(或任何限制),只需使用应用程序范围对象中的信息。
如果超过24小时,请运行该过程以选择图像和标题,将其加载到对象中,并将时间戳记录到当前时间。
答案 1 :(得分:1)
脚本可以根据当天下载不同的图像。例如,在123年的一年中脚本下载123%50 - > 23.jpg图片
document.getElementById("image_id").src = parseInt(currentTime.getTime()/(1000*60*60*24))%50+".jpg";
图像每天都会改变,而不是随机改变,但我认为这个解决方案已经足够了
答案 2 :(得分:1)
给它一个(需要应用程序范围),将它放在APPLICATION.cfc的onRequestStart方法中
<cfscript>
if( NOT structKeyExists(APPLICATION, 'homePageImage') ) {
APPLICATION.homePageImage = structNew();
}
if(
NOT structKeyExists( APPLICATION.homePageImage, 'imageDate' )
OR NOT structKeyExists( APPLICATION.homePageImage, 'imageSrc')
OR NOT isDate( APPLICATION.homePageImage.imageDate )
OR DateDiff( "h", NOW(), APPLICATION.homePageImage.imageDate ) GT 1
) {
APPLICATION.homePageImage.imageSrc = APPLICATION.Utils.getRandomImage( "/images/captions" );
APPLICATION.homePageImage.imageDate = NOW();
}
</cfscript>
接下来,您需要在某处定义函数getRandomImage(类似于Utils.cfc,然后将其存储在Application.Utils中以实现可重用性)
<cffunction name="getRandomImage" returntype="string" access="public" output="false">
<cfargument name="directory" required="true" hint="this is the directory to select a random image from" />
<!--- Always define a local struct to keep your variable under control --->
<cfset var LOCAL = structNew() />
<cfif NOT directoryExists( expandPath( ARGUMENTS.directory ) )>
<cfthrow message="Directory #arguments.directory# does not exist." />
</cfif>
<cfdirectory action="list" name="LOCAL.imageList" type="file" directory="#expandPath( ARGUMENTS.directory )#" />
<!--- the ceiling part will stop you from getting 0 --->
<cfset LOCAL.targetFile = Ceiling( randRange(0, LOCAL.imageList.recordCount) ) />
<cfset LOCAL.targetFileName = ARGUMENTS.directory & "/" & LOCAL.imageList.name[ LOCAL.targetFile ] />
<cfreturn LOCAL.targetFileName />
</cffunction>
最后,在你的页面上
<cfoutput>
<img src="#APPLICATION.homePageImage.ImageSrc#" />
</cfoutput>
答案 3 :(得分:0)
你真的不应该在服务器端做那些事情。如果您不打算添加图像,则可以发送当前日期时间(如果您不信任客户端计算机时间),并将其余部分保留为javascript。
oImages = [
{time: '2011-01-01', img: 'path/to/image.ext', caption: "image caption"},
... more images ...
];
在页面加载时,您只需创建图像标记并根据服务器时间传递源:
window.onload = function(){
for(i in oImages){
if(oImages[i].time == "coldfusion_time") oTodayImage = oImages[i];
}
oImg = document.creatElement("img");
oImg.setAttribute("title", oTodayImage.caption);
oImg.setAttribute("src", oTodayImage.img);
document.body.appenChild(oImg);
};
您只需输出服务器时间而不是if statement
中的“coldfusion_time”,并硬编码javascript数组对象或输出coldfusion所需的内容。