El problema ocurre porque dentro de cada método, invocas al otro utilizando la palabra reservada
this
cuando en ese ámbito este ya cambió pues al ser desencadenado por el evento
click
en el botón, este sería el nuevo
this
. Una alternativa de solución consiste en que crees una copia de la clase en una variable e invoques a sus métodos tomándola como punto de apoyo.
Código Javascript
:
Ver originalvar Pagina = function () {
var parrafo = document.getElementById("publicacion-texto"),
boton = document.getElementById("btn-remover"),
self = this;
this.restaurar = function () {
parrafo.style.display = 'block';
boton.removeEventListener('click', self.restaurar, false);
boton.addEventListener('click', self.remover, false);
boton.innerHTML = 'Haz click aquí para remover el texto';
};
this.remover = function () {
parrafo.style.display = 'none';
boton.removeEventListener('click', self.remover, false);
boton.addEventListener('click', self.restaurar, false);
boton.innerHTML = 'Haz click aquí para restaurar el texto';
};
this.agregarEventoBtn = function () {
boton.addEventListener('click', self.remover, false);
};
};
Saludos