我正在尝试输出从开始到结束日期的所有日期到数组。一旦我得到数组中的所有日期,我就创建了一个循环数组并添加className的函数。这是我创建数组的代码:
<cfoutput query="qryOne">
<cfloop from="#PickDateTime#" to="#DropDateTime#" index="i" step="#CreateTimeSpan(1,0,0,0)#">
dateArray[#currentrow#] = new Array("#UserID#","#dateformat(i,'mmddyyyy')#");
</cfloop>
</cfoutput>
这是我的JavaScript函数:
var dateArray = new Array();
function getDate(){
for (var i=1; i < dateArray.length; i++){
result = document.getElementById(dateArray[i][1])
result.className = 'booked'
}
}
此时我遇到的问题是代码只给出了结束日期。有时我有 在同一天发生的开始和结束时间,但有时我们也可以有日期范围。这里有几个例子:
Start End
01/21/2015 01/21/2015
08:00 AM 12:30 PM
01/23/2015 01/24/2015
09:00 AM 03:00 PM
01/31/2015 02/05/2015
11:00 AM 10:00 AM
所以我现在的代码只给出了结束日期,我需要得到所有日期。如果有人在上面的代码中看到我做错了,请告诉我。感谢。
答案 0 :(得分:1)
如Alex和charlietfl所示,您的数组创建逻辑似乎是错误的。我假设您正在尝试存储每个用户的日期范围。在这种情况下,您应该使用结构来存储每个用户的日期数组,而不是数组。
除此之外,我建议首先创建日期数组的ColdFusion结构,然后使用ColdFusion SerializeJSON()
函数将其序列化为JSON。
像这样:
<cfset dateStruct = structNew() />
<cfoutput query="qryOne">
<cfset dateStruct[userID] = arrayNew(1) />
<cfloop from="#PickDateTime#" to="#DropDateTime#" index="i" step="#CreateTimeSpan(1,0,0,0)#">
<cfset arrayAppend(dateStruct[userID],"#dateformat(i,'mmddyyyy')#")/>
</cfloop>
</cfoutput>
然后您可以使用以下函数将结构以JSON格式保存在JavaScript变量中:
<script>
var jsonString = '<cfoutput>#SerializeJSON(dateStruct)#</cfoutput>';
var JSONObject = JSON.parse(jsonString);
</script>
在JavaScript中拥有JSON对象后,您可以使用它来执行任何操作。 如果你想循环遍历JSON对象,请阅读: iterating through json object javascript