Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Ogramar

Páginas: 1 2 3 4 5 6 [7] 8 9 10 11 12 ... 91
121
Buenas, ambos códigos funcionan correctamente y están bien planteados. En el ejercicio 2 en mi navegador se ve mal el cuadro amarillo que donde están los campos del formulario debido a la regla CSS height:125px; Si lo dejo comentado con //height:125px; ya se ve correctamente. Esto ya se ha comentado en algún ejercicio anterior, en general los height no los establecemos mediante CSS sino dejamos que sea el flujo del contenido el que determine los valores de altura.

Salu2

122
Buenas, el ejercicio ha quedado muy bien y explicativo porque al aplicarle css y delimitar con colores los distintos div se diferencia muy bien cada cosa y vemos cómo se propaga el burbujeo según dónde hagamos click.

Al ejecutar el código he visto que después del párrafo y los div, el burbujeo prosigue hacia niveles superiores. Si queremos detenerlo, basta con incluir el alert dentro del if que te identifica si el nodo es de tipo párrafo o de tipo div:

Código: [Seleccionar]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
<title>sin título</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta name="generator" content="Geany 1.32" />
</head>
<script>
window.onload = function ()
{
msg="";
var elemento=document.querySelectorAll('p,div')
for (var i=0;i<elemento.length;i++)
{

elemento[i].addEventListener("click", nodoDOOM)

}

document.addEventListener("click", nodoDOOM)
window.addEventListener("click", nodoDOOM)
 
function nodoDOOM()
{ //**********************************************************************************
//Codigo añadido para comprobar el burbujeo y saber en que nodo nos encontramos
var nombre=this.nodeName;
if( nombre=='P'||nombre=='DIV'){msg=this.firstChild.nodeValue;
alert("Soy un nodo tipo "+ this.nodeName +" "+msg+" y estoy burbujeando" );

}
//*********************************************************************************
//*********************************************************************************
   
msg="";
}

}

</script>
<style>
  body *
 {
    margin: 10px;
    border: 5px solid white;
    text-align:center;
  }
 body{background-color: yellow; }
 #principal{
    position: absolute;
top:50%;
left:50%;
width:300px;
margin-left:-200px;
margin-top:-150px;
padding:5px;
background-color:red;
}
 #secundario{width:250px;background-color:blue;}
 #terciario{width:200px;background-color:green;}
 p{width:150px;background-color:yellow;}
 h1,h2{border: none;}
</style>
<body>
<h1>aprenderaprogramar.com<br>Ejercicio CU01158E<br></h1>
<h2>hacer click sobre cualquier cuadro</h2>
 
<div id="principal">div principal
  <div id="secundario" >div secundario
    <div id="terciario" >div terciario
    <p>Ejemplo de bubbling (burbujeo)</p>
    </div>
  </div>
 
</body>

</html>

Salu2

123
Buenas, la alusión a si el ejercicio no es correcto en el marco de la programación del curso, se refiere a que la metodología del curso se basa en la resolución de los ejercicios siempre basándose en los contenidos explicados en cada entrega en particular, y en entregas anteriores en general. Por ejemplo a mucha gente le gusta usar jQuery, pero usarlo dentro del curso no sería correcto en el marco metodológico que proponemos, porque jQuery no es un contenido que se explique en el curso. Lo mismo ocurre con usar contenidos de entregas más adelantadas en entregas previas, no lo recomendamos desde el punto de vista de la didáctica y no lo consideramos una buena solución desde el punto de vista de la didáctica. Luego cada cual es libre de seguir las recomendaciones didácticas o no, ahí están los contenidos y cada uno los aprovecha como mejor considera. Por ello no recomendamos usar innerHTML en entregas previas a la entrega donde se explica innerHTML, que concretamente es la entrega "innerHTML JavaScript. Modificar texto o html (p.ej. div) en tiempo real. this: acceder al nodo actual (CU01138E)". Todos los ejercicios anteriores a esta entrega, desde el punto de vista de la didáctica, deberían resolverse sin usar innerHTML.

Salu2

125
Buenas, ahora no recuerdo bien, pero el asunto estaría en el onclick="this." ¿Qué significa ese código? El error salta al hacer click en el div uno porque la acción que tienes especificada en el onclick no tiene sentido. Da la impresión de que eso se quedó ahí a medio hacer ¿? O algo que habías escrito y que luego borraste, no lo sé.

Salu2

126
Buenas, tal y como yo lo entiendo, el problema estaría en cómo se hace la validación de que el asociado haya votado.

Supongamos que tienes como página inicial validar.php donde se comprueba si el asociado ya ha votado o no, y en caso de no haber votado le muestra un desplegable para que elija opción y se pasa a la siguiente página (votar.php).

Con ese diseño, no tienes forma de impedir que se use el botón de vuelta atrás y vuelva a votar. Tampoco tendrías forma de impedir que el usuario invocara la url de votar.php pasándole a esta url los datos que le diera la gana. Para impedirlo, tienes que introducir la validación de si el usuario ha votado ya tanto en la página validar.php como en la página votar.php, es decir, tienes que hacer la comprobación dos veces.

La idea sería:

En validar.php: si el usuario no ha votado, se le muestra el desplegable y se le permite votar.

En votar.php: si el usuario no ha votado, se guardan los datos de la votación y se muestra un mensaje de confirmación.

Supongamos ahora opciones:

Un usuario vota y sale de la web: no hay problema.

Un usuario entra en validar.php y no ha votado, vota, le da al botón retroceso y vuelve a votar. Al llegar a votar.php y hacer la comprobación de si ha votado o no se comprobará que ya ha votado, por lo que debería aparecerle un mensaje indicándole "Lo sentimos. Su voto ya está registrado y no es posible votar dos veces".

Salu2

127
Buenas, el ejercicio cumple a la perfección con lo que se pedía. Recordar que los títulos de los temas deben escribirse como se indica en https://aprenderaprogramar.com/foros/index.php?topic=1460.0

Salu2

128
Buenas, ejercicio perfectamente resuelto.

Solo voy a comentar un detalle accesorio: en el CSS de #Contenedor escribes una regla height:125px; y en mi navegador se ve mal. Normalmente el valor height no se establece, sino que dejamos que sea el propio contenido quien determine el alto requerido. No así con las anchuras, que sí se suelen establecer.

Salu2

129
Buenas, las respuesta son correctas. Si se quiere hacer se puede hacer un pequeño código de comprobación como puede verse en este hilo: https://aprenderaprogramar.com/foros/index.php?topic=3995.0

Salu2

131
Buenas paramonso, una vez más remitirte a https://aprenderaprogramar.com/foros/index.php?topic=1460.0 donde se indica la forma de poner título a los temas

Ejercicio bien resuelto

En el apartado b) la respuesta sería que getElementsByTagName('body') devuelve un array con todos los nodos cuya etiqueta se llame body. Como solo hay una etiqueta, en un array el primer elementos es el 0 por eso se utiliza [ 0 ].

Salu2

133
Buenas paramonso, una vez más remitirte a https://aprenderaprogramar.com/foros/index.php?topic=1460.0 donde se indica la forma de poner título a los temas

Ambos ejercicios (el 1 y el 2) los veo bien resueltos

Donde dice medicoEspecialista.prototype=new Medico debería decir medicoEspecialista.prototype=new Medico(); aunque creo que el código lo está aceptando igualmente.

Para quien esté interesado en comprobar el mecanismo de herencia, una simple prueba que se puede hacer es comentar //medicoEspecialista.prototype=new Medico y ejecutar viendo los mensajes de consola. Se obtendrá el error "TypeError: Especialista1.mostrarNacionalidad is not a function"

Salu2

134
Buenas paramonso, una vez más remitirte a https://aprenderaprogramar.com/foros/index.php?topic=1460.0 donde se indica la forma de poner título a los temas

El ejercicio no está bien resuelto, al menos no desde el punto de vista de los convenios habituales dentro de la programación. Cuando un texto nos dice "una hortaliza es un tipo de planta cultivada", esto normalmente debe interpretarse como que la hortaliza es una subclase o elemento por debajo en la cadena de herencia de la planta cultivada. A su vez nos dice que la planta cultivada es un tipo de vegetal: idem.

Entonces tendríamos que tener los elementos vegetal (en la cima del esquema), plantaCultivada y hortaliza, y relacionarlos de acuerdo a las indicaciones del enunciado.

Una solución correcta de este ejercicio sería la planteada en https://aprenderaprogramar.com/foros/index.php?topic=3941.0

Salu2

135
Comunidad / Re:Saludos
« : 10 de Junio 2018, 21:30 »
Buenas Jesús, bienvenido y paso a comentarte algunas cuestiones. Para publicar en los foros deben seguirse las indicaciones que se dan en https://aprenderaprogramar.com/foros/index.php?topic=1460.0

En el caso de ejercicios, debe incluirse su código en el título (por ejemplo CU00632B si fuera el caso).

Los ejercicios de java deben publicarse en el foro C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más

y no en el foro "Comunidad", que es un foro destinado a presentarse o hacer comentarios relacionados con la comunidad.

Voy a mover los temas publicados de forma incorrecta, pero ten en cuenta que en ocasiones un moderador puede borrar un tema si no está correctamente publicado.

Salu2

136
Buenas, el código es una buena solución del ejercicio, bien estructurado

El código es muy similar al del ejercicio CU01147E, si bien tiene pequeños matices. Para quien revise el código puede estar bien comprobar las pequeñas diferencias que tiene e interpretarlas, ya que en un caso se trabaja con herencia y en este con propiedades y métodos estáticos

Salu2

137
Buenas paramonso, como ya hemos comentado en otros hilos por favor para poner título a los temas en los foros sigue las indicaciones que se dan en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

El código es una buena solución del ejercicio, bien estructurado

Salu2

139
Buenas, ejercicio bien resuelto con el código bien estructurado.

En una ejecución he obtenido estos resultados:

Citar
Ejecución con ArrayList

Resumen lista inicial: hay 1278 Coches, 1217 Camiones, 1277 Furgonetas y 1228 Motos
Una vez realizada la eliminación-inserción:
Tiempo empleado en eliminación-inserción (en nanosegundos): 5572328
Resumen lista final: hay 5000 Coches, 0 Camiones, 0 Furgonetas y 0 Motos

Ejecución con LinkedList

Resumen lista inicial: hay 1296 Coches, 1248 Camiones, 1206 Furgonetas y 1250 Motos
Una vez realizada la eliminación-inserción:
Tiempo empleado en eliminación-inserción (en nanosegundos): 2270842
Resumen lista final: hay 5000 Coches, 0 Camiones, 0 Furgonetas y 0 Motos


Como se ha comentado, supone más del doble de tiempo la ejecución con ArrayList que con LinkedList.

Según el tipo de operación que con más frecuencia se fuera a realizar (insertar en posiciones finales, o insertar en posiciones intermedias, o eliminaciones en posiciones intermedias, etc.) nos puede resultar más conveniente utilizar una estructura de datos u otra. Esto en pequeños programas puede no tener importancia, pero para programas de tiempo real con manejo de miles de datos puede resultar crucial, de ahí lo interesante de tener todo esto en cuenta.

Salu2

140
Buenas, veo el ejercicio bien resuelto. Implementar la clase y por otro lado la ejecución en el main es lo más correcto para resolverlo (preferible a hacerlo todo en una sola clase).

Salu2

Páginas: 1 2 3 4 5 6 [7] 8 9 10 11 12 ... 91
Esto es un laboratorio de ideas...
Aprender a programar

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".