Salut je viens de faire un petit bout de code et je ne comprends pas pourquoi je n'obtiens rien dans le console log.

var $jq = jQuery.noConflict();
var company = $jq('#company').val();

 $jq(document).ready(function(){
    $jq('#shipping_same_as_billing:checkbox').change(
        function(){
           if($jq(this).is(':checked')){
                console.log($jq('#company').val());                                                         }                      
     });           
});

Alors une chose que je ne comprends pas c'est au niveau de mon console.log.
Si je mets

console.log($jq('#company').val());

J'obtiens bien un résultat, mais si je mets

console.log(company);

J'ai un blanc
Quelqu'un pourrait m'en expliquer la raison?
Merci :)

3 réponses


Je ne suis pas certain à 100%, mais tu définis var company avant que ton document ne soit présent dans le DOM (avant le document.ready()). Par conséquent il est vide car il n'existe pas.

0-sony
Auteur

Salut, merci d'avoir pris le temps de te pencher sur le sujet. J'ai eu la même idée, mais non, ca ne fonctionne toujours pas =) . Du coup je ne suis pas passé par la variable, je l'ai mis avec l'appelation jQuery entiere, mais bon je suis quand même curieux de savoir pourquoi =)

Salut, je pense que ton block

$jq('#company').val();

n'a pas de valeur avant l'événement "change", donc la variable n'as forcément pas de valeur. Essaye avec :

$jq('#shipping_same_as_billing:checkbox').change(
        function(){
           if($jq(this).is(':checked')){
                 company = $jq('#company').val();
                console.log(company);                                                        
                }                      
     });  

normalement sa devrait être bon.