#javascript #html #dom #promise #fetch
#javascript #HTML #dom #обещание #извлечение
Вопрос:
Здравствуйте, у меня проблема с выборкой данных в моем javascript. Я хочу получать api, но каждый раз, когда я хочу это сделать, что-то идет не так. Сначала я хочу получить html-шаблон, и это работает нормально, но когда я хочу использовать JS-скрипт из этого файла, он показывает, что «функция не определена», я пробовал много способов сделать это. Ниже приведен код, который не работает
var dataset;
fetch('../templates/mainPage.html')
.then(response => response.text())
.then(data => {
dataset = data;
document.getElementById('mainContent').innerHTML = dataset;
//var script = document.createElement('script');
//script.src = '../js/mainTmpl.js';
//document.body.appendChild(script);
//document.body.innerHTML = '<script defer src="../js/mainTmpl.js"></script>';
//script.addEventListener('load', logDataset);
logDataset();
});
и ниже приведен шаблон, который я хочу использовать (HTML-шаблон и JS-скрипт добавляются в основной HTML, но показывают, что «logDataset не определен»
<div class="content">
<div class="main-container">
<span class="main-text" id="main-text">{{TEST}}</span>
<div class="blue-line"></div>
<span class="sub-text" id='sub-text'></span>
</div>
</div>
<script>
window.logDataset = function () {
var thathref = window.location.pathname;
document.getElementById('mainContent').innerHTML = dataset;
var mainText = document.getElementById('main-text');
var subtext = document.getElementById('sub-text');
console.log('test');
fetch('http://localhost:8080/' thathref).then(
function(u){ return u.json(); }
).then(function(data){
var data1 = JSON.parse(JSON.stringify(data));
mainText.innerHTML = data1[0].text;
subtext.innerHTML = data1[1].text;
console.log(data1[0].text);
}
);
}
Я прокомментировал различные методы, которые я пытался заставить работать нормально, но все равно плохо (у меня должен быть JS-скрипт в других файлах)
Ниже экрана ошибки Ошибка
Комментарии:
1. Прочитайте ошибку, в ней говорится, что переменная не определена.
2. Да, я знаю, но он определен во втором файле, и я назначил этот второй файл первому файлу
3. Они будут выполняться по порядку. Нет подъема. Если один файл зависит от другого, вы должны поместить его после того, который ему нужен
4. Хорошо, вы можете показать мне какой-нибудь пример? Меня это действительно волнует. Должен ли я поместить что-то еще во второй файл? проверка, загружен ли он или что?
5. Не вызывайте никаких функций в ваших (объявлениях) файлах, создайте один последний файл, в который вы поместите вызов объявленных функций
Ответ №1:
https://stackblitz.com/edit/js-1clyno?file=index.html
12345678901236789012345678901
Комментарии:
1. Это так не сработает, потому что у меня здесь 1 файл в stackblitz, я хочу 1 файл html с разными шаблонами js и html. Загрузите их и запустите
2. Пожалуйста, отправьте полный URL-адрес кода и измените формат. Что имеет каждый файл и какой эффект он должен выполнить в конце?
3. Только в приведенной выше части трудно понять, какой эффект вы хотите
4. Хорошо, у меня есть решение, это была проблема, потому что я не разрешил обещание, и именно поэтому я не мог запустить ни один скрипт