J'essaie de déboguer mon application Web qui utilise jQuery.
Dans Firebug, j'appelle des fonctions à l'intérieur du $ (document) .ready ..
function val() { console.log('validated outside doc.ready'); }
$(document).ready(function()
{
console.log('document ready...');
function validate() { console.log('validated!'); }
}
Dans la console Firebug, je tape validate()
et il dit que ce n'est pas une fonction
Si je tape val()
cela fonctionne très bien.
Comment appeler validate depuis la console?
Vous n'appelez pas une fonction comme ça, vous venez de définir la fonction.
L'approche correcte consiste à définir la fonction en dehors de document.ready
et appelez-le à l'intérieur:
// We define the function
function validate(){
console.log('validated!');
}
$(document).ready(function(){
// we call the function
validate();
});
Une autre option est de auto-invoquer la fonction comme ça:
$(document).ready(function(){
// we define and invoke a function
(function(){
console.log('validated!');
})();
});
Votre fonction validate
est locale à la fonction que vous avez transmise au gestionnaire jQuery ready
.
si tu fais:
window.validate = function(){ /*....*/ };
vous pourrez accéder à partir de la console. Mais ce n'est pas une bonne pratique de polluer la portée mondiale à moins que ce soit juste pour le débogage.
eh bien, y a-t-il une raison pour laquelle vous auriez besoin de cette fonction dans le document prêt? ce n'est qu'à l'intérieur de ces crochets (portée) que la fonction existera. il suffit de le déplacer, ou tout simplement à l'intérieur du document.