Подтвердить что ты не робот

Функция вызова внутри документа jQuery готова

Во время отладки я всегда использую Firebug и пытаюсь вызвать функции и показать переменные. Однако я не могу, когда функция или переменная определена в $(document).ready.

Как я могу получить доступ к этим переменным? Могу ли я напечатать что-то вроде пространства имен, например document.ready.variableName или как это увидеть?

Спасибо заранее.

4b9b3361

Ответ 1

Глобальные переменные и функции могут быть созданы путем назначения их как свойства window:

$(function(){
    window.foo = function foo() {
        // …
    }
});

foo() должен быть доступен в любом месте после выполнения этого обработчика.

Ответ 2

Как я могу получить доступ к этим переменным?

Ну, ты не можешь. Все, что вы определяете внутри анонимной функции, например, то, что вы используете в $(document).ready, ограничено этой анонимной функцией. Он закрыт и недоступен снаружи.

Итак, вы можете поместить свой console.log внутри $(document).ready, если вам нужно проверить какую-то частную переменную, которая определена в ее области.

Ответ 3

Для чего нужна отладка. Во всех основных браузерах (включая IE) вы можете установить точки останова в javascript-коде. Когда это будет сделано, script остановится, и вы сможете проверить свои переменные.

Здесь некоторые ссылки:

Ответ 4

Это зависит от того, как вы объявляете переменные внутри функции .ready(). Если вы выполняете var x = "test", то нет, они доступны только в пределах функции готовности. Если вы делаете что-то вроде x="test", то это доступно в глобальной области, и вы можете просто получить к нему доступ, как alert(x); или alert(window.x);

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

Ответ 5

Объявить переменную в глобальной области:

например.

<script type="text/javascript">
var globalVar = null;
$(document).ready(
function() {
     globalVar = "This is the value";
}
);

function TestFunc() {
    alert(globalVar);
}
</script>

Здесь, если вы вызываете TestFunc() в любое время после загрузки страницы, вы увидите значение, назначенное в функции ready().

Ответ 6

Не уверен, что я полностью понимаю проблему, но не могли бы вы просто объявить переменные за пределами документа?

var a = "bar";

$(document).ready(function(){
    a = "foo";
});

Если вы используете firebug, вы можете называть console.log в документе готовым, что может дать вам то, что вы ищете.

Ответ 7

Если у вас

var x = "foo"
$(document).ready(function(){
  alert(x); // foo
});

Вы можете видеть переменную x в любом месте, но если вы объявите переменную y в готовый документ, она будет доступна только в документе:

var x = "foo"
$(document).ready(function(){
  alert(x); // foo
  var y = "bar"
  alert(y); // bar
});
alert(y); // undefined