Могу ли я поставить скрипт внизу веб-страницы, но вызвать его сверху? - PullRequest
2 голосов
/ 25 ноября 2010

Может ли это вызвать потенциальные проблемы:

  <HTML>
    <BODY>
      ...
      <INPUT name="xyz" onchange="myFunction();">
      ...
     <SCRIPT>
        function myFunction()
        {
          ...
        }
      </SCRIPT>
    </BODY>
  </HTML>

Что произойдет, если страница загружается медленно и форма отображается до загрузки части скрипта внизу?Произойдет ли ошибка JavaScript, если пользователь введет какой-либо текст в поле ВВОД?

Ответы [ 4 ]

3 голосов
/ 25 ноября 2010

Вам нужно загрузить скрипт, прежде чем вы сможете его вызвать. Почему бы вам не изменить его на что-то вроде этого:

<input name="xyz" id="myInput">
      ...
     <script>
        function myFunction
        {
          ...
        }

        window.onload = function() {
            var myInput = document.getElementById('myInput');
            myInput.onchange = myFunction;
        }
      </script>

Этот подход позволяет разделить разметку и сценарии и хранить все ваши js в одном месте.

1 голос
/ 25 ноября 2010

Разработка JavaScript за последние годы изменилась.

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

Я настоятельно рекомендую прочитать этот краткий рассказ о некоторых лучших практиках JavaScript: http://www.catswhocode.com/blog/best-practices-for-modern-javascript-development.

1 голос
/ 25 ноября 2010

Это работает, хотя это может быть проблемой, если вы загрузили больше HTML, и браузеру потребовалось больше времени для анализа вашего JavaScript в конце. В этом случае ваша функция не будет определена, и вы получите ...

myFunction () не определена

Обратите внимание, что вам нужно добавить открывающую и закрывающую скобки (( & )) после myFunction.

Хотя объявления функций поднимаются, они поднимаются только в содержащем их блоке сценария.

Кроме того, вы должны действительно использовать строчные теги, это уже не 1998 год :) И также помогает тип документа, и, наконец, вы должны попытаться удалить обработчики событий из встроенных атрибутов.

0 голосов
/ 25 ноября 2010

Сценарий должен быть определен в DOM до его выполнения.Если скрипт находится внизу, его необходимо загрузить перед использованием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...