За последние 24 часа нас посетили 16928 программистов и 1178 роботов. Сейчас ищут 1587 программистов ...

Вывод результата функции в div

Тема в разделе "JavaScript и AJAX", создана пользователем Вадим2019, 26 сен 2023.

  1. Вадим2019

    Вадим2019 Активный пользователь

    С нами с:
    22 янв 2019
    Сообщения:
    28
    Симпатии:
    0
    Добрый день!
    Имею вот такой скрипт
    Код (Text):
    1. <script>
    2. function callbackFunction(data) {
    3.   const paramsContainer = document.querySelector('.map__params');
    4.  
    5.   paramsContainer.innerHTML = '';
    6.  
    7.   for (const key in data) {
    8.     const param = document.createElement('div');
    9.     const paramValue = document.createElement('span');
    10.  
    11.     param.className = 'map__params-item';
    12.     param.textContent = `${key}: `;
    13.  
    14.     paramValue.textContent = typeof data[key] === 'object' ? JSON.stringify(data[key]) : data[key];
    15.  
    16.     param.appendChild(paramValue);
    17.     paramsContainer.appendChild(param);
    18.  
    19.   }
    20.  
    21. }
    22.   document.getElementById('paramValue').innerHTML = data[indexTo];
    23. </script>
    24.  
    25. <div id="param"><span id="paramValue"></span></div>
    Скрипт должен выдавать ответ в следующем виде
    Код (Text):
    1. {
    2.   "addressTo": "ул Советская",
    3.   "areaTo": null,
    4.   "boxSize": "m",
    5.   "cashOfDelivery": 26400,
    6.   "cityTo": "г Ростов-на-Дону",
    7.   "deliveryDescription": {
    8.     "description": "от 1 до 2 дней + обработка заказа 10 часов",
    9.     "values": {
    10.       "deliveryMax": 2,
    11.       "deliveryMin": 1,
    12.       "extraTimeInHours": 10
    13.     }
    14.   },
    15.   "indexTo": "344019",
    16.   "mailType": "POSTAL_PARCEL",
    17.   "pvzType": "russian_post",
    18.   "id": 44342,
    19.   "regionTo": "обл Ростовская",
    20.   "sumoc": "150000",
    21.   "weight": "1000"
    22. }
    При помощи document.getElementById('paramValue').innerHTML = data[indexTo]; пытаюсь вывести значение indexTo в div/span.

    Но ничего не выводится, подскажите как решить задачу?
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.852
    Симпатии:
    746
    Адрес:
    Татарстан
    а лог в консоли посмотреть не судьба?
    скорее всего там ругается на ваш data[indexTo] ...ибо надо data.indexTo
     
  3. Вадим2019

    Вадим2019 Активный пользователь

    С нами с:
    22 янв 2019
    Сообщения:
    28
    Симпатии:
    0
    Так тоже пробовал...
    Ругается на Uncaught ReferenceError: data is not defined в строке document.getElementById('paramValue').innerHTML = data.indexTo;
    --- Добавлено ---
    Также ругается на
    Cannot set properties of null (setting 'innerHTML') at Object.callbackFunction в строке paramsContainer.innerHTML = '';
     
  4. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    Скобочки фигурные считали?
    --- Добавлено ---
    Не находит элемент с классом 'map__params'
     
  5. Вадим2019

    Вадим2019 Активный пользователь

    С нами с:
    22 янв 2019
    Сообщения:
    28
    Симпатии:
    0
    Со скобками все норм, откуда они этот map__params взяли не пойму... не в widget.js ни в других подключаемых файлах его не нашел...
    Посмотрите пожалуйста инструкцию по виджету https://widget.pochta.ru/docs я думаю маловероятно что они не рабочее решение разместят...
    --- Добавлено ---
    Вставил <div class="map__params"></div> и все заработало! Всем спасибо!
     
  6. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.852
    Симпатии:
    746
    Адрес:
    Татарстан
    ну в ошибке ж ясно сказано - нет data

    а вот почему нет

    Код (Javascript):
    1. <script>
    2. function callbackFunction(data) {
    3. ........
    4. }
    5.   document.getElementById('paramValue').innerHTML = data[indexTo];
    6. </script>
    правильно вам про скобочки сказали... ВНУТРИ функции должны работать с данными ...
    строку
    document.getElementById('paramValue').innerHTML = data... внутрь функции переместите
    ну и посмотрите все же что там у вас в data перед тем как пытаться что-то выводить оттуда
    Код (Javascript):
    1. console.log(data);