2016-01-22 37 views
-1

我有JSONObject与日期值。每个日期或日期范围都有ID。我用这个代码来创建JSON:如何从JSONObject获取vlaue?

<script> 
    <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> 

    var jsonString = '<cfoutput>#SerializeJSON(dateStruct)#</cfoutput>'; 
    var JSONObject = JSON.parse(jsonString); 

    function giveClass(){ 
     for(var key in JSONObject){ 
      res = document.getElementById(JSONObject[key]); 
      res.className = 'booked' 
     } 
    } 
</script> 

我没有戒备的jsonString,看起来像这样:

{"49":["01082016","01092016"],"48":["03012016","03022016","03032016","03042016","03052016","03062016","03072016","03082016","03092016","03102016","03112016","03122016","03132016","03142016","03152016","03162016","03172016","03182016","03192016","03202016","03212016","03222016","03232016","03242016","03252016","03262016","03272016","03282016","03292016","03302016","03312016"],"44":["01122016"],"47":["02062016"],"46":["02112016","02122016","02132016","02142016","02152016"],"35":["01132016"],"36":["01212016"],"39":["01162016"],"37":["01262016"],"38":["01192016"],"43":["01312016"],"42":["02022016","02032016"],"41":["01142016"],"40":["01172016","01182016","01192016"],"51":["01282016"],"52":["02252016","02262016"],"50":["01282016"]} 

每个日期下唯一的ID存储。在我上面的函数中,我想分配className ='预订'不是每个ID,我想分配给每个值。例如,如果我有id:"42":["02022016","02032016"]我想给这个类的名称,而不仅仅是id 42.我的函数只给了我现在的id类,我怎么可以让我给每个值的类名?

+2

您可以将JSON直接放入您的JavaScript代码中。它不一定是一个字符串,你不必明确解析它;只需将其创建为普通的JavaScript即可。 – Pointy

+0

只需遍历数组。 –

回答

3

您通过每个阵列需要循环:

function giveClass(){ 
    for(var key in JSONObject){  
     for(var i=0;i<JSONObject[key].length;++i){ 
      var res2 = document.getElementById(JSONObject[key][i]); 
      res2.className = 'booked'; 
     }    
    } 
} 

由于尖说:

您可以直接拖放到JSON JavaScript代码。它不是 必须是一个字符串,你不必明确解析它;只需 将其创建为普通的JavaScript。

+0

This Works!我完全忘了循环两次以获得每个ID的所有元素。另外小方面说明,我们不需要getEmelentById和className两次,所有可以在第二次循环后完成。谢谢! –

+0

很高兴为你效劳! –

+0

我还有一个问题,在上面的问题中,我有cfloop在哪里创建arrayAppend(dateStruct [userID],“#dateformat(i,'mmddyyyy')#”),我想在数组中添加一个元素next给我。添加元素后,我想循环并检查该元素。我如何获得额外的元素? –