2013-02-18 6 views
0

Messieurs du soir, j'ai eu un dur, et je ne sais pas si c'est la bonne façon d'y aller ou pas mais ici va ... fondamentalement im créer un calendrier dynamique, et actuellement je travaille sur la fonction mois de retour (vous cliquez sur la flèche, il remonte) j'ai une fonction jquery qui démarre d'autres fonctions onclick, pour l'instant tout fonctionne, le calendrier se redessine un mois en arrière, le nom du mois remonte d'un, Cependant, j'ai un problème pour régler l'année 1, Pour en savoir plus ... le nom du mois est redessiné par une requête ajax (php) et cela fonctionne parfaitement, et de ce que je peux dire que mon javascript devrait fonctionner aussi bien. fondamentalement chaque fois qu'il remonte à un an, im stocker un numéro dans <div id = "placeholder> à utiliser comme point de référence. Cela semble compliqué, espérons-le code aura plus de sens, et si quelqu'un peut trouver une Beter façon de le faire s'il vous plaît laissez-moi savoir:Stockage des valeurs pour les futurs maths avec javascript

jquery:

$(document).ready(function() { 

$("#changeMonthBack").click(function() { 

//ajax query for month title 
function(data) { 
    //responce is here 
    //set year (n) 
     var placeholder = parseInt($("#placeholder").attr('class'),10); 

     if(str == 1 && placeholder == ""){ 
      var d = new Date(); 
      var n = d.getFullYear(); 
      n = n - 1; 
      $("#placeholder").addClass("1"); 
     } 

     else if(str == 1 && placeholder != ""){ 
      var d = new Date(); 
      var n = d.getFullYear(); 
      n = n - placeholder; 
      var temp = placeholder + 1; 
      $("#placeholder").removeClass(""+placeholder+""); 
      $("#placeholder").addClass(""+temp+""); 
     } 

     else{ 
      var d = new Date(); 
      var n = d.getFullYear(); 
     } 



     $("#monthYear").html(data +" "+ n); 

HTML:

<li title = "Previous Month" id = "changeMonthBack"></li> 
    <div id = "placeholder"></div><!-- holder for year js --> 
    <div id = "monthYear"> 

actuellement après avoir obtenu en 2013, il me donne une erreur NaN. toute aide serait belle. Si plus d'information pourrait aider simplement me faire savoir

+0

Si vous "parseInt" une chaîne vide, vous obtiendrez 'NaN'. Donc vos tests de 'placeholder' contre une chaîne vide n'ont aucun sens. Votre variable 'placeholder' est déjà' NaN'. Aussi, pourquoi utilisez-vous la classe pour stocker des données? Utilisez les attributs 'data-'. –

+0

@ MattBurland suppose que j'aurais dû ajouter que im nouveau à jquery, et même javascript. – Nick

+0

Ouais, ce n'est vraiment pas clair ce que vous essayez de faire. Y a-t-il une raison pour laquelle vous voulez stocker des données dans un élément DOM en premier lieu au lieu d'une variable JavaScript? Un violon pourrait vraiment aider. –

Répondre

1

Si vous faites quelque chose comme ceci:

$(document).ready(function() { 
    var placeholder = 0; 

    $("#changeMonthBack").click(function() { 
     //.... 
     function(data) { 
      //responce is here 
      //set year (n) 
      if(str == 1 && placeholder === 0) { 
       var d = new Date(); 
       var n = d.getFullYear(); 
       n = n - 1; 
       placeholder = 1; 
      } 

      else if(str == 1 && placeholder > 0) { 
       var d = new Date(); 
       var n = d.getFullYear(); 
       n = n - placeholder; 
       placeholder++; 
      } 
     } 
     //.... 
    }); 

}); 

Vous pouvez maintenant utiliser la placeholder variable dans votre gestionnaire click (et dans les fonctions plus profondes imbriquées) parce que votre fonction imbriquée a accès aux variables définies dans la fermeture externe.

Désormais, vous n'avez plus à vous soucier de stocker des données dans le DOM.

+0

merci beaucoup homme – Nick

Questions connexes