JavaScript - Nesecito hacer un test de preguntas aleatorias llamando las preguntas desde html a Javascript

 
Vista:
Imágen de perfil de Mismel
Val: 53
Ha disminuido su posición en 11 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Nesecito hacer un test de preguntas aleatorias llamando las preguntas desde html a Javascript

Publicado por Mismel (24 intervenciones) el 01/06/2020 16:56:46
Este es el archivo html
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
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
<tr>
    <td height="31"><div align="justify">
      <p align="justify"> <strong>Paciente de 55 años, hipertenso, consulta por dolor precordial   opresivo, de 70 minutos de duración, asociado a disnea. Al examen físico   se aprecia paciente disneico, con presión arterial de 150/100 mmHg y   frecuencia cardíaca de 110 lpm. El examen físico segmentario no aporta   mayor información. Se realiza electrocardiograma que muestra   supradesnivel de segmento ST en DII, DIII y AVF e infradesnivel del   segmento ST en V1 a V4. La conducta más adecuada es:</strong></p>
      <br>
      <p class="pregunta1">
        <input type="radio" name="pregunta1" id="p11">
        Realizar terapia de reperfusión con angioplastia o fibrinolíticos, inmediatamente.</p>
      <p class="pregunta1">
        <input type="radio" name="pregunta1" id="p12">
        Administrar aspirina y realizar ecocardiografía urgente</p>
      <p class="pregunta1">
        <input type="radio" name="pregunta1" id="p13">
        Solicitar troponinas y decidir manejo según resultados.</p>
      <p class="pregunta1">
        <input type="radio" name="pregunta1" id="p14">
        Realizar manejo médico conservador, ya que el infradesnivel del ST en las derivaciones        precordiales contraindica la trombolisis.</p>
      <p class="pregunta1">
        <input type="radio" name="pregunta1" id="p15">
        Iniciar AINEs, como terapia sintomática</p>
      <br>
      <p align="justify"><strong>Paciente de 25 años, previamente sano, consulta por cuadro de larga evolución de ardor epigástrico, irradiado a zona retroesternal, que aparece luego de algunas comidas. También refiere presentar regurgitación frecuente de contenido ácido. El examen físico resulta normal. La conducta más adecuada es: </strong></p>
      <p class="pregunta2">
        <input type="radio" name="pregunta2" id="p21">
        Iniciar omeprazol a dosis estándar, asociado a medidas generales antirreflujo
      <p class="pregunta2">
        <input type="radio" name="pregunta2" id="p22">
        Solicitar endoscopía digestiva alta y actuar según hallazgos</p>
      <p class="pregunta2">
        <input type="radio" name="pregunta2" id="p23">
        Solicitar pHmetría de 24 horas y decidir manejo según hallazgos</p>
      <p class="pregunta2">
        <input type="radio" name="pregunta2" id="p24">
        Solicitar ecografía abdominal ambulatoria</p>
      <p class="pregunta2">
        <input type="radio" name="pregunta2" id="p25">
        Realizar tratamiento erradicador de Helicobacter pylori</p>
      <br>
      <p align="justify"><strong>Hombre de 53 años, fumador de 50 paquetes-año, se realiza   radiografía de tórax como parte de un control de salud. En ella se   observa nódulo de 3 cm en lóbulo superior derecho, de bordes   irregulares, sin otros hallazgos. El examen físico resulta normal. La   conducta inicial más adecuada es:</strong>.</p>
      <p class="pregunta3">
        <input type="radio" name="pregunta3" id="p31">
        Derivar para realización de biopsia de la lesión</p>
      <p class="pregunta3">
        <input type="radio" name="pregunta3" id="p32">
        Solicitar TAC de tórax con contraste</p>
      <p class="pregunta3">
        <input type="radio" name="pregunta3" id="p33">
        Comparar con radiografías previas</p>
      <p class="pregunta3">
        <input type="radio" name="pregunta3" id="p34">
        Iniciar antibióticos y solicitar nueva radiografía en 3 meses.</p>
      <p class="pregunta3">
        <input type="radio" name="pregunta3" id="p35">
        Solicitar baciloscopías</p>
      <br>
      <p align="justify"> <strong>Mujer de 24 años, cursando embarazo de 28 semanas, sin síntomas ni signos de patología.       Se realiza pruebas tiroídeas como parte del control prenatal, con los siguientes resultados:        TSH: 2,9 (VN: 0,4 – 4,0) y T4: 16,8 (VN: 4 -12). El diagnóstico más probable es: </strong>
      <p class="pregunta4">
        <input type="radio" name="pregunta4" id="p41">
        Enfermedad de Basedow-Graves</p>
      <p class="pregunta4">
        <input type="radio" name="pregunta4" id="p42">
        Elevación de TBG</p>
      <p class="pregunta4">
        <input type="radio" name="pregunta4" id="p43">
        Enfermedad de Hashimoto</p>
      <p class="pregunta4">
        <input type="radio" name="pregunta4" id="p44">
        Tiroiditis silente</p>
      <p class="pregunta4">
        <input type="radio" name="pregunta4" id="p45">
        Hipertiroidismo subclínico</p>
      <br>
      <p>quinta pregunta del test... La respuesta es B.</p>
      <p class="pregunta5">
        <input type="radio" name="pregunta5" id="p51">
        Texto de la respuesta A.</p>
      <p class="pregunta5">
        <input type="radio" name="pregunta5" id="p52">
        Texto de la respuesta B.</p>
      <p class="pregunta5">
        <input type="radio" name="pregunta5" id="p53">
        Texto de la respuesta C.</p>
      <p class="pregunta5">
        <input type="radio" name="pregunta5" id="p54">
        Texto de la respuesta D.</p>
      <p class="pregunta5">
        <input type="radio" name="pregunta5" id="p55">
        Texto de la respuesta D.</p>
      <br>
      <p>sexta pregunta del test... La respuesta es C.</p>
      <p class="pregunta6">
        <input type="radio" name="pregunta6" id="p61">
        Texto de la respuesta A.</p>
      <p class="pregunta6">
        <input type="radio" name="pregunta6" id="p62">
        Texto de la respuesta B.</p>
      <p class="pregunta6">
        <input type="radio" name="pregunta6" id="p63">
        Texto de la respuesta C.</p>
      <p class="pregunta6">
        <input type="radio" name="pregunta6" id="p64">
        Texto de la respuesta D.</p>
      <p class="pregunta6">
        <input type="radio" name="pregunta6" id="p65">
        Texto de la respuesta D.</p>
      <br>
      <p>septima pregunta del test... La respuesta es D.</p>
      <p class="pregunta7">
        <input type="radio" name="pregunta7" id="p71">
        Texto de la respuesta A.</p>
      <p class="pregunta7">
        <input type="radio" name="pregunta7" id="p72">
        Texto de la respuesta B.</p>
      <p class="pregunta7">
        <input type="radio" name="pregunta7" id="p73">
        Texto de la respuesta C.</p>
      <p class="pregunta7">
        <input type="radio" name="pregunta7" id="p74">
        Texto de la respuesta D.</p>
      <p class="pregunta7">
        <input type="radio" name="pregunta7" id="p75">
        Texto de la respuesta D.</p>
		<br>
      <p>octava pregunta del test... La respuesta es D.</p>
      <p class="pregunta8">
        <input type="radio" name="pregunta8" id="p81">
        Texto de la respuesta A.</p>
      <p class="pregunta8">
        <input type="radio" name="pregunta8" id="p82">
        Texto de la respuesta B.</p>
      <p class="pregunta8">
        <input type="radio" name="pregunta8" id="p83">
        Texto de la respuesta C.</p>
      <p class="pregunta8">
        <input type="radio" name="pregunta8" id="p84">
        Texto de la respuesta D.</p>
      <p class="pregunta8">
        <input type="radio" name="pregunta8" id="p85">
        Texto de la respuesta D.</p>
		<br>
      <p>novena pregunta del test... La respuesta es D.</p>
      <p class="pregunta9">
        <input type="radio" name="pregunta9" id="p91">
        Texto de la respuesta A.</p>
      <p class="pregunta9">
        <input type="radio" name="pregunta9" id="p92">
        Texto de la respuesta B.</p>
      <p class="pregunta9">
        <input type="radio" name="pregunta9" id="p93">
        Texto de la respuesta C.</p>
      <p class="pregunta9">
        <input type="radio" name="pregunta9" id="p94">
        Texto de la respuesta D.</p>
      <p class="pregunta9">
        <input type="radio" name="pregunta9" id="p95">
        Texto de la respuesta D.</p>
		<br>
      <p>decima pregunta del test... La respuesta es D.</p>
      <p class="pregunta10">
        <input type="radio" name="pregunta10" id="p101">
        Texto de la respuesta A.</p>
      <p class="pregunta10">
        <input type="radio" name="pregunta10" id="p102">
        Texto de la respuesta B.</p>
      <p class="pregunta10">
        <input type="radio" name="pregunta10" id="p103">
        Texto de la respuesta C.</p>
      <p class="pregunta10">
        <input type="radio" name="pregunta10" id="p104">
        Texto de la respuesta D.</p>
      <p class="pregunta10">
        <input type="radio" name="pregunta10" id="p105">
        Texto de la respuesta D.</p>
		<br>
      <p>oncena pregunta del test... La respuesta es D.</p>
      <p class="pregunta11">
        <input type="radio" name="pregunta11" id="p111">
        Texto de la respuesta A.</p>
      <p class="pregunta11">
        <input type="radio" name="pregunta11" id="p112">
        Texto de la respuesta B.</p>
      <p class="pregunta11">
        <input type="radio" name="pregunta11" id="p113">
        Texto de la respuesta C.</p>
      <p class="pregunta11">
        <input type="radio" name="pregunta11" id="p114">
        Texto de la respuesta D.</p>
      <p class="pregunta11">
        <input type="radio" name="pregunta7" id="p75">
        Texto de la respuesta D.</p>
    </div></td>
  </tr>
</table>
<p align="justify">&nbsp;</p>
<p align="justify">&nbsp;</p>
<br>
<hr>
<h2 align="center" id="resultado">Aciertos: 0</h2>
<p align="center"><input type="button" value=" R E S U L T A D O " onClick="resultado()"/></p>
</form>
 
 
</body>
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
sin imagen de perfil
Val: 59
Ha aumentado su posición en 2 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Nesecito hacer un test de preguntas aleatorias llamando las preguntas desde html a Javascript

Publicado por luis (22 intervenciones) el 02/06/2020 02:21:16
Hola Mismel.

Para empezar los identificadores "id" sobran dado que los input tipo radio ya están identificados con su número de índice.

Por ejemplo la respuesta primera a la pregunta 1 se identificaría con pregunta1[0]; la segunda respuesta sería pregunta1[1] y así sucesivamente. El input radio funciona como un Array, cuyo número de componentes depende de la cantidad de etiquetas que contengan name="pregunta1".

Para seguir cada pregunta podrías darles carácter de oculto mediante la propiedad display='none', cambiándola a "visible" de forma aleatoria mediante una variable que contuviese el operador Math.random(). Cada pregunta deberías alojarla en una tabla con la propiedad display='none'. Había pensado inicialmente emplear visibility, pero no es adecuado pues dicha propiedad elimina la visualización pero mantiene la posición de la tabla. Y dado que una está encima o debajo de la otra pues no quedaría bien, pues supondría ver enormes espacios en blanco. La ventaja de "display" es que elimina la visualización y también la posición, luego todas las tablas con display='' (visible) se ubicarían en la parte superior de la página.

Para completar dicha página contaríamos con el botón "RESULTADO" que ejecutaría una función en el que se escogería al azar alguna de las preguntas, haciendo visible a ésta y ocultando al resto. Además entiendo que una vez apareciese una pregunta ya no debería volver a repetirse. Esto complica un poco las cosas, pero no tanto como para no poder solucionarse.

Te publico un pequeño ejemplo con las tres primeras preguntas. Lo he programado para que la correcta sea la primera opción. Si pulsas dicha opción el resultado suma un punto, y si pulsas cualquier otra no sumará y además te aparecerá una alerta advirtiéndote del error. Naturalmente para cambiar la respuesta correcta nada más fácil como modificar el código de la función "respuestacorrecta()" y cambiar el número de índice de cada pregunta. Recuerda que [0] correspondería a la respuesta 1, [1] a la dos, [2] a la tres... y así hasta llegar a la respuesta cinco que correspondería al índice [4]

Te adjunto también un fichero llamado test.html para que puedas probarlo sin tener que recurrir al copia-pega

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
<html>
 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Pregunta 1</title>
</head>
 
<script language=javascript>
valor1=0;valor2=0;valor3=0;
function verpreguntas(){
 
aleatorio=parseInt(Math.random()*3)
if((valor1==2)&&(valor2==2)&&(valor3==2)){alert('el cuestionario está agotado con una puntuación total de '+resultado.innerHTML+' puntos');return}
if((aleatorio==0)&&(valor1==2)){verpreguntas();return}
if((aleatorio==1)&&(valor2==2)){verpreguntas();return}
if((aleatorio==2)&&(valor3==2)){verpreguntas();return}
 
if(aleatorio==0){titulo1.style.display='';valor1=1;}
if(aleatorio==1){titulo2.style.display='';valor2=1;}
if(aleatorio==2){titulo3.style.display='';valor3=1;}
 
}
 
 
function respuestacorrecta(){
if(valor1==1){
if(f1.pregunta1[0].checked==true){resultado.innerHTML++}
else{alert('respuesta incorrecta')}
titulo1.style.display='none';valor1=2
}
 
if(valor2==1){
if(f1.pregunta2[0].checked==true){resultado.innerHTML++}
else{alert('respuesta incorrecta')}
titulo2.style.display='none';valor2=2
 
}
 
if(valor3==1){
if(f1.pregunta3[0].checked==true){resultado.innerHTML++}
else{alert('respuesta incorrecta')}
titulo3.style.display='none';valor3=2
 
}
 
}
 
 
</script>
 
<body onload="verpreguntas()"><form name=f1>
<tr>
    <td height="31"><div align="justify">
      <table border="1" width="100%" id=titulo1 style="display:none" >
		<tr>
			<td><font face="Arial">Pregunta 1</font></td>
		</tr>
		<tr>
			<td><font face="Arial"> <strong>Paciente de 55 años, hipertenso,
			consulta por dolor precordial opresivo, de 70 minutos de duración,
			asociado a disnea. Al examen físico se aprecia paciente disneico,
			con presión arterial de 150/100 mmHg y frecuencia cardíaca de 110
			lpm. El examen físico segmentario no aporta mayor información. Se
			realiza electrocardiograma que muestra supradesnivel de segmento ST
			en DII, DIII y AVF e infradesnivel del segmento ST en V1 a V4. La
			conducta más adecuada es:</strong></font></td>
		</tr>
		<tr>
			<td><font face="Arial">
        <input type="radio" name="pregunta1"  value="V1">
        	Realizar terapia de reperfusión con angioplastia o fibrinolíticos,
			inmediatamente.</font></td>
		</tr>
		<tr>
			<td><font face="Arial">
        <input type="radio" name="pregunta1"  value="V1">
        	Administrar aspirina y realizar ecocardiografía urgente</font></td>
		</tr>
		<tr>
			<td><font face="Arial">
        <input type="radio" name="pregunta1"  value="V1">
        	Solicitar troponinas y decidir manejo según resultados.</font></td>
		</tr>
		<tr>
			<td><font face="Arial">
        <input type="radio" name="pregunta1"  value="V1">
        	Realizar manejo médico conservador, ya que el infradesnivel del ST
			en las derivaciones precordiales contraindica la trombolisis.</font></td>
		</tr>
		<tr>
			<td>
      <p align="justify"> <font face="Arial">
        <input type="radio" name="pregunta"  value="V1">
        Iniciar AINEs, como terapia sintomática</font></p>
      		</td>
		</tr>
		</table>
      <br>
      <table border="1" width="100%" id=titulo2 style="display:none">
		<tr>
			<td><font face="Arial">Pregunta 2</font></td>
		</tr>
		<tr>
			<td><font face="Arial"><strong>Paciente de 25 años, previamente sano, consulta por cuadro de larga evolución de ardor epigástrico, irradiado a zona retroesternal, que aparece luego de algunas comidas. También refiere presentar regurgitación frecuente de contenido ácido. El examen físico resulta normal. La conducta más adecuada es: </strong>
			</font></td>
		</tr>
		<tr>
			<td><font face="Arial">
        <input type="radio" name="pregunta2" value="V1">
        Iniciar omeprazol a dosis estándar, asociado a medidas generales antirreflujo
			</font></td>
		</tr>
		<tr>
			<td><font face="Arial">
        <input type="radio" name="pregunta2"  value="V1">
        Solicitar endoscopía digestiva alta y actuar según hallazgos</font></td>
		</tr>
		<tr>
			<td><font face="Arial">
        <input type="radio" name="pregunta2"  value="V1">
        Solicitar pHmetría de 24 horas y decidir manejo según hallazgos</font></td>
		</tr>
		<tr>
			<td><font face="Arial">
        <input type="radio" name="pregunta2"  value="V1">
        Solicitar ecografía abdominal ambulatoria</font></td>
		</tr>
		<tr>
			<td><font face="Arial">
        <input type="radio" name="pregunta2"  value="V1">
        Realizar tratamiento erradicador de Helicobacter pylori</font></td>
		</tr>
		</table>
		<p>
		<table border="1" width="100%" id=titulo3 style="display:none">
			<tr>
				<td>Pregunta 3</td>
			</tr>
			<tr>
				<td>
      <p align="justify"><font face="Arial"><strong>Hombre de 53 años, fumador de 50 paquetes-año, se realiza   radiografía de tórax como parte de un control de salud. En ella se   observa nódulo de 3 cm en lóbulo superior derecho, de bordes   irregulares, sin otros hallazgos. El examen físico resulta normal. La   conducta inicial más adecuada es:</strong>.</font></p>
      			</td>
			</tr>
			<tr>
				<td><font face="Arial">
        <input type="radio" name="pregunta3"  value="V1">
        Derivar para realización de biopsia de la lesión</font></td>
			</tr>
			<tr>
				<td><font face="Arial">
        <input type="radio" name="pregunta3" value="V1">
        Solicitar TAC de tórax con contraste</font></td>
			</tr>
			<tr>
				<td><font face="Arial">
        <input type="radio" name="pregunta3"  value="V1">
        Comparar con radiografías previas</font></td>
			</tr>
			<tr>
				<td><font face="Arial">
        <input type="radio" name="pregunta3" value="V1">
        Iniciar antibióticos y solicitar nueva radiografía en 3 meses.</font></td>
			</tr>
			<tr>
				<td><font face="Arial">
        <input type="radio" name="pregunta3" value="V1">
        Solicitar baciloscopías</font></td>
			</tr>
			</table>
    </div>
<br>
<hr>
<h2 align="center" >Aciertos: <span id="resultado">0</span></h2>
<p align="center"><input type="button" value=" R E S U L T A D O " onClick="respuestacorrecta();verpreguntas()"/></p>
</form>
 
 
</body>
</body>
 
</html>
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 Mismel
Val: 53
Ha disminuido su posición en 11 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Nesecito hacer un test de preguntas aleatorias llamando las preguntas desde html a Javascript

Publicado por Mismel (24 intervenciones) el 02/06/2020 19:34:57
Yo tengo un código escrito para el verdadero y falso y a ese archivo.js le quiero agregar el Math.random
Podrías ayudarme con eso
T voy a mandar el html con el js
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