Функция вызова внутри документа jQuery готова
Во время отладки я всегда использую Firebug и пытаюсь вызвать функции и показать переменные. Однако я не могу, когда функция или переменная определена в $(document).ready
.
Как я могу получить доступ к этим переменным? Могу ли я напечатать что-то вроде пространства имен, например document.ready.variableName
или как это увидеть?
Спасибо заранее.
Ответы
Ответ 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