JavaScript: $(document).ready блокирует вызов функции

222
18 октября 2017, 08:21

Здравствуйте!

Почему в этом куске кода функция onclick вызваннная из тела документа не работает?

<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
  <script>
   $(document).ready(function () {
    function count_rabbits() {
            for(var i=1; i<=3; i++) {
               // оператор + соединяет строки
               alert("Из шляпы достали "+i+" кролика!")
            }
        }
     });
  </script>
</head>
<body>
<input type="button" onclick="count_rabbits()" value="Считать кролей!"/>
</body>
</html>

А если удалить $(document).ready(function () {}, то начнет работать.

Answer 1

Проблема в том, что при использовании inline-Обработчиков, вроде

onclick="count_rabbits()"

используемая функция должна быть

  1. глобальной
  2. объявлена до использования в разметке.

В данном случае, функция count_rabbits локальная и к ней нет доступа извне.

Для решения, нужно просто вынести ее из $(document).ready(function () {

READ ALSO
Поставить фокус на элемент в iframe

Поставить фокус на элемент в iframe

У меня есть iframe в котором лежит форма, я хочу чтобы при каком-то событии, например onkeydown, фокус падал на элемент внутри iframeДелал так:

201
Как передать window.open url в переменной?

Как передать window.open url в переменной?

Как забрать значение атрибута href у ссылки и передать переменной в url

202
tToogle() в Angular 2

tToogle() в Angular 2

Добрый день, не могу сообразить как сделать toggleClass() в Angular Есть 2 блока

271
Как работают state в React?

Как работают state в React?

Есть пример кода:

256