JSON, который я вставил в атрибут html-элемента, при просмотре отличается от данных атрибута. - PullRequest
0 голосов
/ 02 мая 2019

Короче говоря, мне нужно поместить json в атрибут элемента html, чтобы получить его позже. Сделав это, я начинаю пересматривать этот json, но вместо ключей и значений есть только некоторые цифры.

Вот этот JSON:

{Type: "gotWeather", Days: [,…]}
Days: [,…]
0: {Sections: [{Temperature: 280.55, Description: "scattered clouds", Time: 
"21:00:00", Icon: "03n"}],…}
1: {Sections: [{Temperature: 278.98, Description: "scattered clouds", Time: 
"00:00:00", Icon: "03n"},…],…}
2: {Sections: [{Temperature: 282.57, Description: "overcast clouds", Time: 
"00:00:00", Icon: "04n"},…],…}
3: {,…}
4: {Sections: [{Temperature: 285.953, Description: "light rain", Time: 
"00:00:00", Icon: "10n"},…],…}
5: {Sections: [{Temperature: 280.9, Description: "light rain", Time: 
"00:00:00", Icon: "10n"},…],…}
Type: "gotWeather"

В соответствии с кодом ниже я ставлю:

socket.onmessage = function(evt){
   var json = JSON.parse(evt.data);
   weatherAnswer(json);
}

function weatherAnswer(json){
   // ...
   var buttons = prepareButtons(json);
}

function prepareButtons(json){
   var buttonsList = document.createElement("ul");
   buttonsList.classList.add("ButtonsList");

   //Done
   buttonsList.setAttribute("json" , json);
}

Далее я поместил кнопки в ul li и определил слушателя для нажатия на эти кнопки:

function clicking(){    
    var li = this.parentElement;
    // buttonsList equals to the UL keeping the json in attributes
    var buttonsList = li.parentElement;
    var json = buttonsList.getAttribute("json");
    console.log(Object.keys(json));
}

Тип json [объектный объект]; В результате получаю следующее -

15) ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", 
"13", "14"]
 0: "0"
1: "1"
2: "2"
3: "3"
4: "4"
5: "5"
6: "6"
7: "7"
8: "8"
9: "9"
10: "10"
11: "11"
12: "12"
13: "13"
14: "14"
length: 15
__proto__: Array(0)

Но это должно быть как наверху истории.

1 Ответ

0 голосов
/ 02 мая 2019

Я не уверен, поможет ли это вам, но в вашем коде у вас уже есть buttonsList в качестве объекта, поэтому вы можете установить для него свой объект JSON непосредственно в prepareButtons() function:

buttonsList._dummyName = json;

и получите его в функции clicking() следующим образом:

var json = buttonsList._dummyName ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...