Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как правильно подгрузить js файл через javascript (https://javascript.ru/forum/misc/79343-kak-pravilno-podgruzit-js-fajjl-cherez-javascript.html)

alanat 27.01.2020 00:34

Как правильно подгрузить js файл через javascript
 
Добрый день.
Сделал файл test.js:
function mF()
{document.write('Hello');}


И html.
Так работает:
<div id="jsp"><script src="test.js"></script></div>
<script>mF();</script>

А так не работает:
<div id="jsp"></div>
<script>jsp.innerHTML="<script src='test.js'></"+"script>";</script>
<script>mF();</script>

Как правильно подгрузить js файл через javascript, чтобы вывелась надпись Hello?

Заранее благодарен за ответ.

Aetae 27.01.2020 00:38

У вас две фундаментальные ошибки.
1. innerHTML не исполняет скрипты. Используйте DOM методы для добавления скрипта на страницу.
2. document.write не работает после того как документ уже загружен. Используйте любые иные методы для вывода текста.

alanat 27.01.2020 10:12

"Используйте DOM методы для добавления скрипта на страницу":
правильно ли я понял, что добавлять файл со скриптом необходимо так:
<script>const script = document.createElement('script');
script.src = 'test.js';
document.head.appendChild(script);</script>

рони 27.01.2020 10:27

Цитата:

Сообщение от alanat
правильно ли я понял,

да, осталось заменить document.write

alanat 27.01.2020 10:38

Цитата:

Сообщение от рони
осталось заменить document.write

test.js такой:
function mF()
{jsp.innerHTML='Hello';}


а test.html такой:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Документ без названия</title>
</head>
<body>
<script>const script = document.createElement('script');
script.src = 'test.js';
document.head.appendChild(script);</script>
<div id="jsp"></div>
<script>mF();</script>
</body>
</html>


И всё равно не работает.

рони 27.01.2020 10:49

alanat,
строку 12 либо перенесите в test.js, либо так
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Документ без названия</title>
</head>
<body>
<script>
function abracadabra()
{
  mF();
}</script>
<script>const script = document.createElement('script');
script.src = 'test.js';
script.onload = abracadabra;
document.head.appendChild(script);</script>
<div id="jsp"></div>

</body>
</html>

alanat 27.01.2020 11:03

Цитата:

Сообщение от рони
строку 12 либо перенесите в test.js, либо так

Огромное спасибо за помощь.
Если честно, то уже отчаялся считать мой вопрос решаемым.


Часовой пояс GMT +3, время: 13:34.