2017-08-17 2 views
1

J'ai deux fonctions jquery click qui définissent et récupèrent la valeur d'un objet javascript.La fonction Jquery ne peut pas accéder à la variable globale

var poly; 

$(document).ready(function() { 
    //save drawing 
    $("#save").click(function() { 
     poly = new Polygon(); 
     poly.savedrawingaspoly(map.polygonevent); 
     poly.tract = tract; 
     poly.name = $('#polyname').val(); 
     console.log(poly); 
    }); 

    $("#btnClear").click(function() { 
     console.log(poly); 
     //poly.clearplot(); 
    }); 
}); 

les console.log(poly); dans $("#save").click œuvres. le console.log(poly); dans $("#btnClear").click renvoie undefined. Comment puis-je étaler la portée de la variable, de sorte que le second peut voir la variable? Merci.

+0

Cliquez-vous sur btnClear avant de sauvegarder? –

+1

Est-ce que btnClear va être cliqué avant de sauvegarder? Sinon, ce code devrait fonctionner ... –

+0

Écrivez cette ligne en haut: var poly; poly = nouveau Polygone(); – Dilip

Répondre

0

Vous pouvez stocker et accéder à l'objet à .data() de #save objet jQuery

$(document).ready(function() { 
    //save drawing 
    $("#save").click(function() { 
     $(this).data().poly = new Polygon(); 
     $(this).data().poly.savedrawingaspoly(map.polygonevent); 
     $(this).data().poly.tract = tract; 
     $(this).data().poly.name = $('#polyname').val(); 
     console.log($(this).data().poly); 
    }); 

    $("#btnClear").click(function() { 
     if ($("#save").data().poly !== undefined) { 
      $("#save").data().poly.clearplot(); 
     } else { 
      console.log($("#save").data()) 
     } 
    }); 
}); 
+0

@Barmar Votre commentaire initial a obligé une relecture de Answer et une alerte au fait qu'il manquait '$ (" # save "). Data()' partie de l'approche de '$ (" # btnClear ")' handler. – guest271314

0

Définir comme mondiale et l'utiliser à travers les événements et la fonction

$(document).ready(function() { 
    //save drawing 
    var poly = new Polygon(); 
    $("#save").click(function() { 
     poly.savedrawingaspoly(map.polygonevent); 
     poly.tract = tract; 
     poly.name = $('#polyname').val(); 
     console.log(poly); 
    }); 

    $("#btnClear").click(function() { 
     console.log(poly); 
     //poly.clearplot(); 
    }); 
}); 
0

Utilisez l'objet fenêtre garder votre variable dans le contexte du navigateur. Donc, le nouveau code ressemblera à:

$("#save").click(function() { 
     poly = new Polygon(); 
     poly.savedrawingaspoly(map.polygonevent); 
     poly.tract = tract; 
     poly.name = $('#polyname').val(); 
     console.log(poly); 

     window.poly = poly; 
}); 

Après la mise en œuvre du code mentionné ci-dessus; vous pouvez accéder à la variable poly via n'importe quelle fonction et également via la console de votre navigateur.