Buenas, como veo que es tu primer mensaje en el foro darte la bienvenida y espero que te animes a participar respondiendo también a otros usuarios.
Hago algunos comentarios sobre el ejercicio. Tu código hace lo que pedía el ejercicio (y alguna cosa añadida, como mostrar las diez primeras letras de la palabra), por ese lado bastante bien. Sin embargo habría varias cosas que mejorar en el código:
- Como cabecera del código es conveniente que pongas una línea con:
<!DOCTYPE html>
No es lo principal pero si lo haces mejor.
- Hacer cosas como subpalabra[0] = ''; para trabajar con los índices a partir de 1 en general sería calificado de "poco elegante" o "poco profesional". Eres libre de hacerlo, pero te recomendaría que te acostumbres a trabajar con los índices partiendo de cero en lugar de dejar el elemento 0 del array sin utilizar.
- Creo que has cogido código de algún ejemplo del curso CSS. Esto complica para este curso, ya que nos encontramos con decenas de líneas CSS que no son útiles para este curso, e incluso pueden ser perjudiciales. Por ejemplo, p { display: inline-block; margin: 0 0 5px 0;} altera el comportamiento normal de los párrafos haciendo que en lugar de comportarse como elementos block se comporten como elementos inline. Como resultado, los párrafos no se ven uno debajo de otro. Si dejamos simplemente p { margin: 0 0 5px 0;} se ve mucho mejor porque se aprecia que son párrafos. De cualquier manera, en este curso es preferible no meter css ó si se mete, meter lo mínimo imprescindible.
Otro ejemplo: cursor: hand; no es correcto. Lo correcto sería cursor: pointer; pero para evitar estos problemas mejor quitar el css de estos ejercicios.
- Deberías mejorar la lógica que utilizas en la programación. Por ejemplo
for (var i = 1; i <= 10; i++) {
subpalabra[i] = subpalabra[i - 1] + palabra.charAt(i - 1);
}
Con la lógica que utilizas se produce lo siguiente en cuanto al valor de los elementos subpalabra:
subpalabra 1 vale p
subpalabra 2 vale pa
subpalabra 3 vale pap
subpalabra 4 vale pape
subpalabra 5 vale papel
subpalabra 6 vale papel
subpalabra 7 vale papel
subpalabra 8 vale papel
subpalabra 9 vale papel
subpalabra 10 vale papel
Esto tiene poco sentido y además es ineficiente, estás almacenando en 10 posiciones de memoria algo de escasa o ninguna utilidad.
Otro ejemplo es esto:
for (var i = 10; i === 10; i++) {
msg = msg + subpalabra[i];
}
Este bucle tiene una condición por la cual sólo se produce una ejecución. Si sólo hay una ejecución ¿Para qué queremos un bucle?
Habría que revisar todo el código para hacerlo eficiente. Si no has programado antes puede ser de interés leer
https://aprenderaprogramar.com/foros/index.php?topic=1313.0El segundo ejercicio está bien, lo único que te recomendaría es en lugar de for (var i = 1; i <= elementoP.length; i++) acostumbrarte a usar for (var i = 0; i < elementoP.length; i++) que es la convención habitual entre programadores.
No te desanimes, que quien la sigue la consigue. ¡Animo!
Salu2