Проблема с Javascript src

Мой код JavaScript будет работать, если я помещу его в файл HTML в теги сценарий. Если я помещу код в отдельный файл .js, он не запустится.

Вот фиктивный файл, с которым я играл. Код, который работает:

<head>
    <link rel = "stylesheet" href = "TabStyle.css">
</head>
<body>
<script>
    function openCity(evt, cityName) {
        var i, tabcontent, tablinks;

        tabcontent = document.getElementsByClassName("tabcontent");
        for (i = 0; i < tabcontent.length; i++) {
            tabcontent[i].style.display = "none";
        }

        tablinks = document.getElementsByClassName("tablinks");
        for (i = 0; i < tablinks.length; i++) {
            tablinks[i].className = tablinks[i].className.replace(" active", "");
        }

        document.getElementById(cityName).style.display = "block";
        evt.currentTarget.className += " active";
    }

</script>
<!-- Tab links -->
<div class = "tab">
    <button class = "tablinks" onclick = "openCity(event, 'London')">London</button>
    <button class = "tablinks" onclick = "openCity(event, 'Paris')">Paris</button>
    <button class = "tablinks" onclick = "openCity(event, 'Tokyo')">Tokyo</button>
</div>

<!-- Tab content -->
<div id = "London" class = "tabcontent">
    <h3>London</h3>
    <p>London is the capital city of England.</p>
</div>
<div id = "Paris" class = "tabcontent">
    <h3>Paris</h3>
    <p>Paris is the capital of France.</p>
</div>
<div id = "Tokyo" class = "tabcontent">
    <h3>Tokyo</h3>
    <p>Tokyo is the capital of Japan.</p>
</div> 
</body>

Код, который не работает:

<head>
    <link rel = "stylesheet" href = "TabStyle.css">
</head>
<body>
<script src = "TabJS.js"></script> 
<!-- Tab links -->
<div class = "tab">
    <button class = "tablinks" onclick = "openCity(event, 'London')">London</button>
    <button class = "tablinks" onclick = "openCity(event, 'Paris')">Paris</button>
    <button class = "tablinks" onclick = "openCity(event, 'Tokyo')">Tokyo</button>
</div>
<!-- Tab content -->
<div id = "London" class = "tabcontent">
    <h3>London</h3>
    <p>London is the capital city of England.</p>
</div>
<div id = "Paris" class = "tabcontent">
    <h3>Paris</h3>
    <p>Paris is the capital of France.</p>
</div>
<div id = "Tokyo" class = "tabcontent">
    <h3>Tokyo</h3>
    <p>Tokyo is the capital of Japan.</p>
</div> 
</body>

Проверьте свой путь к файлу - это единственная причина, по которой это не сработает

Robin Zigmond 01.10.2018 16:00

Не могли бы вы проверить инструменты разработчика вашего браузера? В частности, вкладка сети, чтобы убедиться, что скрипт загружен, и вкладка консоли, чтобы увидеть, возникли ли какие-либо ошибки скрипта.

Rup 01.10.2018 16:00

В TabJS.js есть теги <script>?

j08691 01.10.2018 16:01

@RobinZigmond Может быть заблокирован и HTTP-запрос.

Mark Baijens 01.10.2018 16:01

В зависимости от вашего браузера может случиться так, что DOM еще не отображается при выполнении кода ...

janniks 01.10.2018 16:03

если ваш src не ошибочен (путь действителен), вам нужно будет поместить тег скрипта непосредственно перед </body> или добавить прослушиватель событий загрузки в документ или окно.

ths 01.10.2018 16:04

В файле TabJS.js нет тегов скрипта. Должно быть ?? Все, что я прочитал, говорит нет

Harris Shapiro 01.10.2018 16:08

Нет, но я хотел посмотреть, есть ли они у тебя там

j08691 01.10.2018 16:10

Я получаю консольную ошибку. Ошибка загрузки для <script> с источником «c: \ Users \ PROD \ Desktop \ html \ TabJS.js». tabtest.html: 33

Harris Shapiro 01.10.2018 16:21

Попробуйте stackoverflow.com/questions/11996257/…

j08691 01.10.2018 16:22

@HarrisShapiro - это путь к файлу - "путь", который вы указываете веб-ресурсу, должен быть URL-адресом, который его обслуживает.

Robin Zigmond 01.10.2018 16:32

Значит, ваш HTML-код находится в C: \ Users \ PROD \ Desktop \ html \ tabtest.html? (То же место, что и TabStyle.css?) В этом случае вам нужен просто src = "TabJS.js", а не полный путь. Но нет веских причин, по которым полный путь не должен работать - я думаю, что современные браузеры довольны путями C: \, а также путями file: //.

Rup 01.10.2018 16:41
Поведение ключевого слова "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) для оценки ваших знаний,...
2
12
103
2

Ответы 2

Я воспроизвел ваш пример, и все работает как задумано. Вот снимок экрана, на котором показаны файлы, структурированные в папке, и вывод в браузере:

Вероятно, вы неправильно разместили свои файлы или ссылка на код неверна.

Проверьте следующее:

  • файлы находятся в одной папке
  • ссылка на файл JS выглядит следующим образом: <script src = "TabJS.js"></script>
  • без тегов в файле JS, только чистый JavaScript

Кроме того, возникают ли у вас ошибки в консоли браузера (Инструменты разработчика)?

Привет, в медленные дни я страдаю от того, что забываю сделать все следующее, может быть, это то же самое для тебя !? Убедитесь, что вы используете последнюю версию Chrome. Убедитесь, что у вас включены Инструменты разработчика. Наведите указатель мыши на перезагрузку и выберите «Очистить кеш и жесткую перезагрузку», затем просмотрите, что происходит, и в случае ошибки в консоли справа внизу должен быть указатель.

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