Как изменить innerHTML текущего элемента?

Я пытаюсь напечатать текст на текущем элементе. Я попробовал эти два кода, но они, похоже, не работают:

Этот печатает текст во всем документе:

<div>
  <script>
    fetch('file.txt').then((resp) => resp.text()).then(function(data) {
      document.write(data);
    });
  </script>
</div>

В результате:

<html>
  <body>
    <!-- THE TEXT THAT I REQUESTED APPEARS HERE -->
  </body>
</html>

И приведенный ниже код возвращает следующую ошибку:

<div>
  <script>
    fetch('file.txt').then((resp) => resp.text()).then(function(data) {
      document.this.innerHTML(data);
    });
  </script>
</div>

Cannot read property 'innerHTML' of undefined

document.body.innerHTML = data;
Pranav C Balan 18.04.2019 20:08
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
420
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Замените this на body. innerHTML - это не функция, это свойство, которое вам нужно установить.

Я думаю, вы хотите добавить к <div>, в котором <script> мы присутствуем. Вы можете получить доступ к скрипту и получить его parentNode

<div>
  <script>
    const script = document.scripts[document.scripts.length - 1];
    fetch('file.txt').then((resp) => resp.text()).then(function(data) {
      script.parentNode.innerHTML = data;
    });
  </script>
</div>

Примечание:document.scripts[document.scripts.length - 1] получит текущий тег <script>, потому что это будет последний выполненный скрипт.

Я думаю, он хочет записать это в текущий div... Это запишет в тело.

Get Off My Lawn 18.04.2019 20:13

Как объяснялось выше, я хочу напечатать текст на текущем элементе, в данном случае это <div>, а не на <body>.

Lucas Fernandes 18.04.2019 20:16

просто замените document.body на «селектор текущего div». В вашем примере HTML вы показываете, что хотите, чтобы он был добавлен непосредственно к телу.

Andu Andrici 18.04.2019 20:18

@GetOffMyLawn Я обновил ответ. Я неправильно понял сначала.

Maheer Ali 18.04.2019 20:18

Вы можете использовать document.writeln() для записи в текущем div

<div>
  <script>
    fetch('file.txt').then((resp) => resp.text()).then(function(data) {
      document.writeln(data);
    });
  </script>
</div>

Вот аналогичный пример, демонстрирующий результат.

<div>
  <script>
    Promise.resolve('abc123<br>xyz789')
    .then(function(data) {
      document.writeln(data)
    });
  </script>
</div>

Сначала вы должны переместить скрипт из div, а затем заменить «это» в своем коде ссылкой на целевой div.

Если вы дадите своему div идентификатор «target», вы можете сделать следующее:

const target = document.getElementById('target');

fetch('file.txt').then((resp) => resp.text()).then((data) => target.innerHTML = data);

Другие вопросы по теме