D'après ce que je peux dire à ce jour de votre script, le bloc de code suivant:
Kalender.prototype.writeMonth = function() {
var that = this;
contient un code plus bas:
else if (this.isToday(displayNum, length) && this.isLink(displayNum, length))
{
sbuffer.push('<td class="date" onClick="that.changeDate(this,\''
+ this.id + '\'); that.returnDate('+ this.month +','+ this.year+')">' + displayNum + '</td>');
}
Cela poserait un problème, puisque la variable that
est déclaré dans la portée de cette fonction et l'événement onclick se déclenchera en dehors de la portée. IMO, la construction du HTML n'est pas la meilleure méthode ici. Il serait préférable de construire les cellules du tableau en utilisant le DOM et d'ajouter des gestionnaires d'événements qui sont dans la portée de la fonction. Cela arrive plusieurs fois.
Pour votre information, vous utilisez eval()
dans votre code plutôt inutilement:
this.months = eval("config.language."+ this.options['language'] +".months");
// Can also be written as:
this.months = config.language[this.options['language']].months;
Voir Eval is Evil pour plus d'informations.
Lectures
MSDN - Building Tables Dynamically
MDC - Traversing an HTML table with JavaScript and DOM Interfaces
MDC - Working with Closures
Merci pour l'aide. Pouvez-vous s'il vous plaît jeter un oeil sur le code et plus de conseils moi? – user160820