#javascript #html
#язык JavaScript #HTML
Вопрос:
Я ломал голову над этой проблемой, она не будет считывать данные внутри файла json, в нем говорится об этой ошибке
Uncaught TypeError: Cannot read properties of undefined (reading 'Messages') at showDataset (Week 11 Assignment.html:38) at onload (Week 11 Assignment.html:83)
Задание showDataset @ Неделя 11.html:38 загрузка @ Задание на 11-ю неделю.html:83
lt;!DOCTYPE htmlgt; lt;headgt; lt;meta charset="utf-8"gt; lt;scriptgt; var i=0; var xmlhttp; var Quotes; function loadJSON() { xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = HandleData; xmlhttp.open("GET","Quotes.json", true); xmlhttp.send(); } function HandleData() { if (xmlhttp.readyState==4 amp;amp; xmlhttp.status==200) { Quotes = eval('(' xmlhttp.responseText ')'); showDataset(); } } function showDataset() { var x for (x = 0; x lt; Quotes.Messages.length; x ) { let p = document.createElement('p') p.innerHTML = "lt;pgt;" Quotes.Messages[x].datetime " : " Quotes.Messages[x].Note " By : " Quotes.Messages[x].Username "lt;/pgt;"; if(i % 2) { p.style.background = "yellow"; } i ; document.body.appendChild(p); } } function createParagraph() { var someText = document.getElementById('someText').value; let p = document.createElement('p'); time = getTime() date = getDate() p.innerHTML = "lt;pgt;" date time someText " By : " Quotes.Messages[0].Username "lt;/pgt;"; if(i % 2) { p.style.background = "yellow"; } i ; document.body.appendChild(p); } function getDate() { var currentdate = new Date(); var date = currentdate.getFullYear() "-" currentdate.getMonth() "-" currentdate.getDate() " "; return date; } function getTime() { var currentdate = new Date(); var time = currentdate.getHours() ":" currentdate.getMinutes() ":" currentdate.getSeconds() " : "; return time; } lt;/scriptgt; lt;/headgt; lt;body id="page" onload="showDataset()"gt; Examplelt;/brgt; Sample Textlt;/brgt;lt;/brgt; lt;input type="text" name="userText" id="someText" onchange="createParagraph()"gt; lt;/bodygt; lt;/htmlgt;
Это набор данных файла Json, он должен выводить время, примечание и имя пользователя на
Функция ShowDataset()
Я понятия не имею об этом, потому что весь код, который я считаю правильным, я довольно новичок в javascript и кодировании
Messages : [ { "Time" : "1", "Note" :"2" , "Username" : "3"}, { "Time" : "11", "Note" :"21", "Username" : "31"} { "Time" : "12", "Note" :"22", "Username" : "32"} ]
Ответ №1:
Цитата переменной не определена, и вы пытались прочитать сообщения о свойствах undefined. Вот почему у вас есть Ошибка. Теперь я могу сказать вам, что у вас это есть, потому что, когда тело загружено, вы немедленно запускаете showDataset().
Вместо этого вы должны сделать это в своем html
lt;body id="page" onload="loadJSON()"gt; Examplelt;/brgt; Sample Textlt;/brgt;lt;/brgt; lt;input type="text" name="userText" id="someText" onchange="createParagraph()"gt; lt;/bodygt;
здесь вы загрузите json, и вы уже можете вызвать хорошую функцию, когда это будет сделано 😉
еще вы пытались прочитать данные, которые не были инициированы.
Комментарии:
1. я исправил проблему, мое имя папки было слишком длинным, и оно не могло определить набор данных