2016-01-22 2 views
-1

У меня есть JSONObject с значениями даты. Каждый диапазон дат или дат имеет идентификатор. Я использовал этот код для создания JSON:Как получить vlaue от JSONObject?

<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"]} 

Каждая дата хранится под уникальным идентификатором. В моей функции выше я хочу назначить className = 'забронировано' не каждому идентификатору, я хочу присвоить каждому значению. Например, если у меня есть 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

Это работает! Я полностью забыл цикл дважды, чтобы получить все элементы для каждого идентификатора. Также небольшое примечание стороны, нам не нужно getEmelentById и className дважды, что все можно сделать после второго цикла. Спасибо! –

+0

Рад, что это сработало для вас! –

+0

У меня есть еще один вопрос, делайте выше в моем вопросе. У меня есть cfloop, где я создаю arrayAppend (dateStruct [userID], "# dateformat (i, 'mmddyyyy') #"), я хотел бы добавить еще один элемент в массив next к i. После добавления элемента я хочу выполнить цикл и проверить этот элемент. Как я могу получить этот дополнительный элемент? –

Смежные вопросы