JavaScript - ¿Cómo hacer que el video se detenga cuando selecciono el otro video o cuando lo reproduzco?

 
Vista:
Imágen de perfil de Enrique
Val: 9
Ha aumentado su posición en 250 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

¿Cómo hacer que el video se detenga cuando selecciono el otro video o cuando lo reproduzco?

Publicado por Enrique (3 intervenciones) el 02/07/2021 21:32:30
Hola gente, tengo un detalle con mi página. Estoy haciendo un slider de videos y no consigo hacer que cuando estoy reproduciendo un video y me muevo al siguiente, se detenga el video que se está reproduciendo. ¿Qué debo poner en mi página para lograrlo y cómo lo hago?

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<!DOCTYPE html>
<html>
<head>
    <title>Document</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
    <div class="videos">
        <div class="vids">
            <input type="radio" name="video-slide" id="vid1" checked>
            <input type="radio" name="video-slide" id="vid2">
 
            <video src="Videos/aprendiendo juntos(1).mp4" controls class="v1" alt="vid1"></video>
            <video src="Videos/InteligenciaEmocional.mp4" controls class="v2" alt="vid2"></video>
            <div class="dots">
                <label for="vid1" id="btn1"></label>
                <label for="vid2" id="btn2"></label>
            </div>
        </div>
    </div>
 
    <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.min.js"></script>
</body>
</html>
 
<style>
.videos{
    background-color: coral;
    width: 60%;
    position: relative;
    margin: 0 auto;
}
.vids{
    background-color: cornflowerblue;
    width: 80%;
    display: flex;
    height: 400px;
    overflow: hidden;
    margin: 0 auto;
}
.vids video{
    width: 100%;
    height: 380px;
}
.vids input{
    display: none;
}
.dots{
    display: flex;
    justify-content: center;
    width: 80%;
    position: absolute;
    bottom: 0;
}
.dots label{
    height: 12px;
    width: 12px;
    background-color: darkslategray;
    border-radius: 50%;
    cursor: pointer;
    margin: 0 8px;
}
.dots label:hover{
    background-color: gray;
}
#vid1:checked ~ .v1{
    margin-left: 0;
}
#vid2:checked ~ .v2{
    margin-left: -100%;
}
#vid1:checked ~ .dots #btn1{
    background-color: white;
}
#vid2:checked ~ .dots #btn2{
    background-color: white;
}
</style>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Gio
Val: 368
Bronce
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

¿Cómo hacer que el video se detenga cuando selecciono el otro video o cuando lo reproduzco?

Publicado por Gio (79 intervenciones) el 02/07/2021 23:54:49
Hola Enrique, tal vez este sea el código que buscas:
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
<!DOCTYPE html>
 
<html>
 
<head>
 
    <title>Document</title>
 
    <meta charset="UTF-8">
 
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
 
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet">
 
</head>
 
<body>
 
    <div class="videos">
 
        <div class="vids">
 
            <input type="radio" name="video-slide" id="vid1" checked>
 
            <input type="radio" name="video-slide" id="vid2">
 
 
			<!-- videos -->
 
            <div class="dots">
 
            </div>
 
        </div>
 
    </div>
 
 
 
    <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js"></script>
 
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.min.js"></script>
 
</body>
 
</html>
 
 <script>
	//CONFIGURACION
		let videosLinks = [ "Videos/aprendiendo juntos(1).mp4", "Videos/InteligenciaEmocional.mp4" ];
		let video = 0; //VIDEO INICIAL
 
 
 
	//CREACION HTML
		let padre = document.getElementsByClassName("vids")[0];
		let res="", res2="";
 
		//SE CREAN LOS ELEMENTOS DE VIDEO Y BOTONES DE MENU
			for(i in videosLinks){
				i=parseInt(i);
				res+='<video src="'+videosLinks[i]+'" controls class="v'+(i+1)+'" alt="vid'+(i+1)+'"></video>';
				res2+='<label onclick="seleccionar('+i+')" for="vid'+(i+1)+'" id="btn'+(i+1)+'"></label>';
			}
 
		//SE COLOCAN DONDE DEBEN IR
			let va=padre.innerHTML;
			let en = va.indexOf("<!-- videos --\u003E");
			va=va.split("");
			va[en+15]=va[en+15]+res;
			va=va.join("");
		//SE APLICAN LOS ELEMENTOS PREVIAMENTE CREADOS AL DOCUMENTO (A LA PÁGINA) Y SE OBTIENEN ELEMENTOS NUEVOS PARA SU POSTERIOR USO
			padre.innerHTML=va;
			let videos=padre.getElementsByTagName("video");
			let botones=padre.getElementsByClassName("dots")[0];
			botones.innerHTML=res2;
		//SE AJUSTA EL ESTILO DEL BOTON QUE REPRESENTA EL VIDEO INICIAL (SELECCIONADO POR DEFECTO)
			botones.children[video].style.backgroundColor="white";
	//FUNCION QUE SE ACTIVA CUANDO EL USUARIO QUIERE CAMBIAR DE VIDEO
		function seleccionar(n){
			videos[video].pause(); //EL VIDEO ACTUAL SE PAUSA
			videos[video].style.display="none"; //EL VIDEO ACTUAL SE OCULTA
			videos[n].style.display=""; //EL VIDEO SELECCIONADO SE HACE VISIBLE
			//videos[n].play(); //SE HACE PLAY EN EL VIDEO SELECCIONADO
			botones.children[n].style.backgroundColor="white"; //SE CAMBIA EL COLOR DEL BOTON PARA QUE PAREZCA SELECCIONADO
			botones.children[video].style.backgroundColor=""; //SE CAMBIA EL COLOR DEL BOTON PARA QUE PAREZCA DESELECCIONADO
			video=n; //SE ACTUALIZA LA NUEVA POSICION
		}
 </script>
<style>
.videos{
    background-color: coral;
    width: 60%;
    position: relative;
    margin: 0 auto;
}
.vids{
    background-color: cornflowerblue;
    width: 80%;
    display: flex;
    height: 400px;
    overflow: hidden;
    margin: 0 auto;
}
.vids video{
    width: 100%;
    height: 380px;
}
.vids input{
    display: none;
}
.dots{
    display: flex;
    justify-content: center;
    width: 80%;
    position: absolute;
    bottom: 0;
}
.dots label{
    height: 12px;
    width: 12px;
    background-color: darkslategray;
    border-radius: 50%;
    cursor: pointer;
    margin: 0 8px;
}
.dots label:hover{
    background-color: gray;
}
</style>

Es muy sencillo usarlo, casi que lo único que debes hacer, es dirigirte a la línea 50 del código y ahí colocar los links de los videos que necesitas en tu página web. El resto de código se encargará de hacer el trabajo sucio. Dejé todo bien comentado por si quieres saber como funciona y así hacerle las modificaciones que desees (en caso de que necesites hacerlo).

NOTA: no elimines el comentario HTML de la línea 28, el código se basa en el para saber donde dejar los videos.

Espero que mi aporte te sea de utilidad, un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
Imágen de perfil de Enrique
Val: 9
Ha aumentado su posición en 250 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

¿Cómo hacer que el video se detenga cuando selecciono el otro video o cuando lo reproduzco?

Publicado por Enrique (3 intervenciones) el 03/07/2021 00:29:37
Grande Gio, no detiene el video como tal, solo lo pausa, pero esta perfecto. Es justo lo que necesitaba
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Gio
Val: 368
Bronce
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

¿Cómo hacer que el video se detenga cuando selecciono el otro video o cuando lo reproduzco?

Publicado por Gio (79 intervenciones) el 03/07/2021 01:48:28
Si necesitas hacer un stop en el video (oséa pausarlo y mandarlo a 0:00), en ese caso tienes que actualizar la funcion "seleccionar()" por la siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function seleccionar(n){
	videos[video].pause(); //EL VIDEO ACTUAL SE PAUSA
	videos[video].currentTime=0; //REINICIA EL VIDEO ACTUAL
	videos[video].style.display="none"; //EL VIDEO ACTUAL SE OCULTA
 
	videos[n].style.display=""; //EL VIDEO SELECCIONADO SE HACE VISIBLE
	//videos[n].play(); //SE HACE PLAY EN EL VIDEO SELECCIONADO
 
	botones.children[n].style.backgroundColor="white"; //SE CAMBIA EL COLOR DEL BOTON PARA QUE PAREZCA SELECCIONADO
	botones.children[video].style.backgroundColor=""; //SE CAMBIA EL COLOR DEL BOTON PARA QUE PAREZCA DESELECCIONADO
 
 
	video=n; //SE ACTUALIZA LA NUEVA POSICION
}

Si te fijas en la tercera línea se agregó la función que envía el video a 0:00 luego de pausarlo, por si el usuario vuelve a ese video, estará desde el principio ¿esto era lo que necesitabas?
Otra cosa a tener en cuenta, es la línea 7, si la descomentás hará que cuando el usuario elija otro video, este empezará reproduciéndose (en play).
Me surge otra pregunta ¿Qué hay de la mecánica que cambia el video automáticamente al siguiente cuando finaliza el actual? ¿La necesitas? pregunto porque es fácil de implementar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Enrique
Val: 9
Ha aumentado su posición en 250 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

¿Cómo hacer que el video se detenga cuando selecciono el otro video o cuando lo reproduzco?

Publicado por Enrique (3 intervenciones) el 03/07/2021 21:35:50
Ya veo. Intenté poniendo en lugar de pause la palabra stop pero creo que eso no existe. En cuanto al cambio automático no es importante, gracias por la pregunta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Gio
Val: 368
Bronce
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

¿Cómo hacer que el video se detenga cuando selecciono el otro video o cuando lo reproduzco?

Publicado por Gio (79 intervenciones) el 03/07/2021 22:32:20
Estoy casi seguro de que stop no existe, pero puedes implementarlo haciendo uso de la función videos[video].currentTime=0 luego de poner en pausa ese video.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar