_jQuery.
_を使用するWebアプリをデバッグしようとしています
Firebugでは、$(document).ready内の関数を呼び出します。
_ function val() { console.log('validated outside doc.ready'); }
$(document).ready(function()
{
console.log('document ready...');
function validate() { console.log('validated!'); }
}
_
Firebugコンソールでvalidate()
と入力しますが、関数ではありません
val()
と入力すると、正常に機能します。
コンソールからvalidateを呼び出すにはどうすればよいですか?
そのような関数を呼び出すのではなく、単にdefine関数を呼び出します。
正しいアプローチは、document.ready
の外部で関数を定義し、内部で呼び出すことです。
// We define the function
function validate(){
console.log('validated!');
}
$(document).ready(function(){
// we call the function
validate();
});
別のオプションはself invokeのような関数です:
$(document).ready(function(){
// we define and invoke a function
(function(){
console.log('validated!');
})();
});
validate
関数は、jQuery ready
ハンドラーに渡した関数に対してローカルです。
もしあなたがそうするなら:
window.validate = function(){ /*....*/ };
コンソールからアクセスできるようになります。ただし、デバッグだけを目的としない限り、グローバルスコープを汚染することはお勧めできません。
さて、ドキュメント内でその機能が必要な理由はありますか?これらの括弧(スコープ)内にのみ関数が存在します。移動するか、ドキュメント内でのみ移動します。