"Uncaught TypeError: Cannot set property 'value' of undefined at cerrando" dentro de setTimeout
Publicado por Alberto (7 intervenciones) el 11/02/2018 00:13:20
Buenas tardes amigo, ando haciendo un ejercicio con setTimeout.
Consiste en hacer que aparezca una ventana y luego de un tiempo desaparezca (listo y probado).
El punto es que quiero que el boton cambie de texto cada vez que ocurran estos eventos y me bota un error al final cuando intenta cambiar el nombre nuevamente:
"Uncaught TypeError: Cannot set property 'value' of undefined at cerrando"
Les comparto el código a ver si pueden ayudarme.
HTML--------------------------------------------------------------------------------------------
SCRIPT -----------------------------------------------------------------------------------------------
Consiste en hacer que aparezca una ventana y luego de un tiempo desaparezca (listo y probado).
El punto es que quiero que el boton cambie de texto cada vez que ocurran estos eventos y me bota un error al final cuando intenta cambiar el nombre nuevamente:
"Uncaught TypeError: Cannot set property 'value' of undefined at cerrando"
Les comparto el código a ver si pueden ayudarme.
HTML--------------------------------------------------------------------------------------------
1
2
3
4
5
6
7
8
9
10
11
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Cerrar ventana</title>
</head>
<body>
<input type="button" id="activador" value="Haz click para abrir ventana">
<script src="Cerrar ventana automaticamente.js"></script>
</body>
</html>
SCRIPT -----------------------------------------------------------------------------------------------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
const botonqueaccionatodo = document.getElementById("activador");
var ventana;
const tiempo = 4000; // tiempo dado en milisegundos
class accion
{
constructor(elemento)
{
this.elemento = elemento;
this.elemento.value = "Haz click para abrir ventana";
this.avisaQuePasa = false;
this.elemento.addEventListener("click", this.DandoClick.bind(this));
}
DandoClick(e)
{
ventana = window.open("", "", "width=500, height=500");
this.avisaQuePasa = !this.avisaQuePasa;//cambia el estado y avisa si la ventana está abierta. El signo ! es para cambiar de estado
this.cambiaTextoApareceYQuitaVentana();
}
cambiaTextoApareceYQuitaVentana()
{
this.elemento.value = "Abriste la ventana";
if(this.avisaQuePasa == true)
{
this.avisaQuePasa = !this.avisaQuePasa;
setTimeout(function cerrando(){// establecemos el tiempo de duración en el que la ventana estará abierta
this.elemento.value = "Haz click para volver a abrir ventana";
ventana.close();//cerrando ventana
}, tiempo);
}
//this.elemento.value = "Haz click para volver a abrir ventana";
}
}
const intercambia = new accion(botonqueaccionatodo);
Valora esta pregunta


0