jquery - функция не определена - вызов этой функции из встроенного скрипта

У меня есть код, как показано ниже. Убрали из этого ненужный код, просто написали, что было нужно. Когда я вызываю свой toggleFunc из встроенного скрипта в теле, в консоли показывается, что эта функция не определена. Может кто-нибудь, пожалуйста, скажите мне, что не так с этим?

<head>
<script src="~/Client/js/lib/jquery-1.10.2.js"></script>
<script type="text/javascript">
    $(document).ready(function(){
        var pageInitialize = function () {  

            ..doing something here

            function toggleFunc() { 
               ..doing something more here
            };
        };
        pageInitialize();
    });
</script>
</head>
<body>
<script>toggleFunc()</script>
</body>

3 ответа

Решение

Обе ваши функции не будут определены до тех пор, пока не сработает DOMReady, что произойдет после вызова toggleFunc в body был запущен. Также, toggleFunc находится в пределах pageInitialize функция, и, следовательно, не доступен снаружи pageInitialize,

Попробуй это:

<script type="text/javascript">
    var pageInitialize = function () {  
        //..doing something here
    };
    pageInitialize();

    function toggleFunc() { 
        //..doing something more here
    };
</script>

Две проблемы:

  1. toggleFunc не глобальная функция. Это локально pageInitialize, Если вы хотите, чтобы он был глобальным, присвойте его window,

  2. Вы определяете функцию внутри $(document).ready обратный вызов, который будет выполняться в определенный момент в будущем. Вы вызываете функцию немедленно, вне $(document).ready Перезвоните. Это еще не было определено.

toggleFunc() Закрытие не может быть вызвано из глобальной области видимости.

Он также вызывается еще до того, как определяется, когда вы используете $(document).ready

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