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 - JuansT

Páginas: 1 [2] 3
21
Respuestas al ejercicio CU01152E del tutorial de programación básica en internet con JavaScript.

a) ¿Qué significa el operador += que se emplea en el código?

el operador += es una doble operación y lo que hace es sumar la variable a operar con la variable destino y la guarda en la variable destino, son equivalentes:
variableDestino = variableDestino + variableOperar;
variableDestino += variableOperar;


b) ¿Por qué usamos [ 0 ] para establecer nodoBody?

Por que getElementsByTagName devuelve un array y al poner [ 0 ] le estamos diciendo que de ese array que nos devuelve sólo quedarnos con el de la posición 0, son equivalentes:
nodoBody = document.getElementsByTagName('body')[0];
nodoBody.innerHTML = nodoBody.innerHTML + htmlADevolver;

con

nodoBody = document.getElementsByTagName('body');
nodoBody[0].innerHTML = nodoBody.innerHTML[0] + htmlADevolver;

y aprovechando la pregunta anterior, también es equivalente:

nodoBody = document.getElementsByTagName('body');
nodoBody[0].innerHTML += htmlADevolver;


c) ¿Qué ocurre si dejamos en blanco la respuesta cuando se pide un color? Razona por qué ocurre esto.

se crea una etiqueta h1: "<h1>No eligió color</h1>"
esto ocurre por que tenemos el condicional ternario donde si la variable "colorUsuario"
está vacía entonces la variable htmlADevolver guarda la etiqueta h1 mencionada antes.


d) ¿Qué ocurre si escribimos pink cuando nos pide el color? Razona por qué ocurre esto.

Esto ocurre por que usamos la variable colorUsuario como valor del parametro "background-color" en la etiqueta h1, y como "pink" es una palabra reconocida por css pinta h1 de color rosa.

e) Modifica el código para que usando el operador ternario, si el usuario no introduce como color red, yellow o blue aparezca el mensaje ‘No eligió color o el color es no válido’

Código: [Seleccionar]
<!DOCTYPE html>
<html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<script type="text/javascript">
function ejemplo() {
var htmlADevolver = '';

var colorUsuario = prompt('Elija color red, yellow o blue');
htmlADevolver += colorUsuario=="red" || colorUsuario=="yellow" || colorUsuario=="blue" ? '<h1 style="background-color:'+colorUsuario+
';"> Usted eligió '+colorUsuario+'</h1>' : alert("no eligió color o el color no es válido");
var nodoBody = document.getElementsByTagName('body');
nodoBody[0].innerHTML += htmlADevolver;
}
</script>
</head>
<body><div id="cabecera"><h2>Cursos aprenderaprogramar.com</h2><h3>Ejemplos JavaScript</h3></div>
<div style="color:blue;" id ="pulsador" onclick="ejemplo()"> Probar </div>
</body>
</html>

f) Reescribe el código inicial de partida sustituyendo el condicional ternario por if tradicionales.

Código: [Seleccionar]
<!DOCTYPE html>
<html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<script type="text/javascript">
function ejemplo() {
var htmlADevolver = '';

var colorUsuario = prompt('Elija color red, yellow o blue');
 if(colorUsuario){
htmlADevolver += '<h1 style="background-color:'+colorUsuario+
';"> Usted eligió '+colorUsuario+'</h1>';
}
else{
htmlADevolver +=  '<h1>No eligió color</h1>';
}
var nodoBody = document.getElementsByTagName('body')[0];
nodoBody.innerHTML = nodoBody.innerHTML + htmlADevolver;
}
</script>
</head>
<body><div id="cabecera"><h2>Cursos aprenderaprogramar.com</h2><h3>Ejemplos JavaScript</h3></div>
<div style="color:blue;" id ="pulsador" onclick="ejemplo()"> Probar </div>
</body>
</html>

22
Respuestas para el ejercicio CU01151E del manual de programación web con JavaScript.

Mensaje que aparece antes:

Citar
SyntaxError: missing ) after argument list
alert('Hello';

Mensaje que aparece después:

Citar
ReferenceError: ejemploObjetos is not defined


El problema que hay en el código es que falta el cierre de paréntesis de la función alert:
 alert('Hello';

Esto provoca que la función ejemploObjetos() no termine de "crearse" ya que cuando llega a la linea del alert se deja de ejecutar javascript antes de llegar al cierre de la función (}) , entonces al hacer la llamada haciendo clic en "probar", la página busca la función "ejemploObjetos()" y no la encuentra, lanzando el error.

El problema se soluciona corrigiendo el alert: alert('Hello'); entonces se termina de crear la función y al hacer clic se ejecuta sin problemas.

23
Muy buenas, adjunto los códigos de respuesta al ejercicio CU01150E del manual de programación web con JavaScript:

EJERCICIO 1:
Código: [Seleccionar]
<!DOCTYPE html>
<html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<script type="text/javascript">
function persona(nombre,nacionalidad){
this.nombre = nombre;
this.nacionalidad = nacionalidad;
}
persona.prototype.mostrarNacionalidad = function(){alert(this.nacionalidad);}

function medico(centroTrabajo,nombre,nacionalidad){
this.centroTrabajo = centroTrabajo;
persona.call(this,nombre,nacionalidad);
}
medico.prototype = new persona();

function medicoEspecialista(especialidad,centroTrabajo,nombre,nacionalidad){
this.especialidad = especialidad;
medico.call(this,centroTrabajo,nombre,nacionalidad);
}
medicoEspecialista.prototype = new medico();

function start(){
var medicoObj = new medicoEspecialista("pediatría","hospital san Juan", "Pedro", "Español");
medicoObj.mostrarNacionalidad();
}

</script>
</head>
<body onload="start()">
</body></html>

EJERCICIO 2:
Código: [Seleccionar]
<!DOCTYPE html>
<html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<script type="text/javascript">
function persona(nombre){
this.nombre = nombre;
}
persona.prototype.definicion = "ser humano";
persona.prototype.saludar = function(){alert("hola soy: " + this.nombre);}

function profesor(institucionAcademica,nombre){
this.institucionAcademica = institucionAcademica;
persona.call(this,nombre);
}
profesor.prototype = new persona();

function profesorInterino(mesesContrato,institucionAcademica,nombre){
this.mesesContrato = mesesContrato;
profesor.call(this,institucionAcademica,nombre);
}
profesorInterino.prototype = new profesor();

function profesorTitular(anosTrabajados,institucionAcademica,nombre){
this.anosTrabajados = anosTrabajados;
profesor.call(this,institucionAcademica,nombre);
}
profesorTitular.prototype = new profesor();

function start(){
var profesorTitular1 = new profesorTitular(8,"univesidad de león","Juan");
profesorTitular1.saludar();
}

</script>
</head>
<body onload="start()">
</body>
</html>

24
Mitad de curso! Respuestas al ejercicio CU01149E del tutorial de codificación con JavaScript.

Aquí presento una posible solución al ejercicio, saludos.

Código: [Seleccionar]
<!DOCTYPE html>
<html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<script type="text/javascript">
function vegetal(){

}
vegetal.movilidad = "ser vivo sin movilidad";
vegetal.prototype.mostrarMovilidad = function(){ return vegetal.movilidad;}


function plantaCultivada(){
this.nombreCientifico = "desconocido";
}
plantaCultivada.prototype = new vegetal();

function hortaliza(){

this.tipoHortaliza = "indefinido";
this.mostrarNombre = function(){return this.tipoHortaliza;}
}
hortaliza.prototype = new plantaCultivada();
hortaliza.componentePrincipal = "agua";


function zanahoria(){
this.tipoHortaliza = "zanahoria";
this.valorCalorico = 45;
}
zanahoria.prototype = new hortaliza();

function lechuga(){
this.tipoHortaliza = "tomate";
this.valorCalorico = 31;
}
lechuga.prototype = new hortaliza();

function tomate(){
this.tipoHortaliza = "tomate";
this.valorCalorico = 39;
}
tomate.prototype = new hortaliza();


function cargarObjetos(){
 var tomate1 = new tomate();
 var msg = tomate1.mostrarNombre() + " tiene la propiedad movilidad: " + tomate1.mostrarMovilidad();
 alert(msg);
 }

</script></head>
<body onload="cargarObjetos()" >
</body></html>

27
Respuesta planteada al ejercicio CU01148E del curso de programador web con JavaScript.

Saludos!

Código: [Seleccionar]
<!DOCTYPE html>
<html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<script type="text/javascript">
function meteorito(d,t,n){
this.diametro = d;
this.temperatura = t;
this.nombre = n;
}
meteorito.definicionSegunDiccionario = "Fragmento de un cuerpo celeste que cae sobre la Tierra, o sobre un astro cualquiera.";

meteorito.obtenerRadio = function(diametro){return diametro/2;}
meteorito.obtenerTemperaturaFarenheit = function(temperaturaCelcius){return temperaturaCelcius*1.8;}

function obtenerSuperficie(diametro){

return Math.PI*Math.pow(meteorito.obtenerRadio(diametro),2);
}
function empezar(){
var meteor = new meteorito(30,800,"luna");
var msg = "¿Qué e sun meteorito?\n\n" + meteorito.definicionSegunDiccionario + "\n\n" +
"Nombre: " + meteor.nombre +
"\nTemperatura(farenheit): " + meteorito.obtenerTemperaturaFarenheit(meteor.temperatura) +
"\nSuperficie: " + obtenerSuperficie(meteor.diametro);
alert(msg);
}
</script>
</head>
<body onload="empezar()">

</body>
</html>

28
Respuesta al ejercicio CU01147E del tutorial de aprendizaje de programación web con JavaScript.

Aquí tengo mi solución, tengo una duda acerca de la sintaxis de acceso de tipo array, primero os adjunto el código que funciona y luego la duda.

Solución:
Código: [Seleccionar]
<!DOCTYPE html>
<html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<script type="text/javascript">
function cometa(d,t,n){
this.diametro = d;
this.temperatura = t;
this.nombre = n;
}
function definicionSegunDiccionario(){
this.definicion = "Astro generalmente formado por un núcleo poco denso y una atmósfera luminosa que lo envuelve, precediéndolo o siguiéndolo, según su posición respecto del Sol, y que describe una órbita muy excéntrica.";
}
cometa.prototype = new definicionSegunDiccionario;
cometa.prototype.obtenerRadio = function(){ return this.diametro/2;}
cometa.prototype.obtenerTemperaturaFarenheit  = function(){ return this.temperatura*1.8;}
function cargarFuncion(){
var cometa1 = new cometa(150,1000,"Bruno");
var cometa2 = new cometa(200,1500,"Arturo");
var cometa3 = new cometa(8000,3000,"Lisa");
var cometas = [cometa1,cometa2,cometa3];
var msg = "Qué es un cometa? \n" + cometa1.definicion +
"\n\nLa información de los tres cometas son: \n";

for(var i=0;i<cometas.length;i++){
msg += "Nombre: " + cometas[i]['nombre'] +
"\nRadio: " + cometas[i]["obtenerRadio"]() +
"\nTemperatura: " + cometas[i]["obtenerTemperaturaFarenheit"]() + "\n\n";
}
alert(msg);
}
</script>
</head>
<body onload="cargarFuncion()">
</body>
</html>


Al array "cometas" puedo acceder sin problemas mediante el acceso por punto, como por ejemplo cometas[0].nombre y también con el for típico guiado por la variable "i" (cometas[ i ]["nombre"]) tal como puse en la solución.
Pero quería probar el acceso tipo array mediante for in, que me parece más correcto, entonces, inicialmente yo había escrito lo siguiente:

Código: [Seleccionar]

for(c in cometas){
msg += "Nombre: " + c['nombre'] +
"\nRadio: " + c["obtenerRadio"]() +
"\nTemperatura: " + c["obtenerTemperaturaFarenheit"]() + "\n\n";
}

Pero en este caso me sale "undefined".

Espero que alguien me pueda aclarar en esta duda, gracias!

29
Respuestas al ejercicio CU01146E del tutorial de programación web para novatos con JavaScript

a) He probado varias cosas pero la única manera que veo de poder hacer esto es cambiando el nombre de las propiedades del objeto, que no sean string, no conozco otro método.


b)
Código: [Seleccionar]
<!DOCTYPE html>
<html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<script type="text/javascript">
function operaciones(){
this.suma = plus;
this.resta = minus;
}
function plus(x,y){ return x + y }
function minus(x,y){ return x - y }
function calcular(x, y, operacion){
var op = new operaciones();
if(operacion == '+'){return op.suma(x, y); }
else{return op.resta(x, y);}
}
function ejemploObjetos() {
alert ('Resultado de calcular(3, 15, \'+\') es '+ calcular(3,15, '+'));
}
</script>
</head>
<body><div id="cabecera"><h2>Cursos aprenderaprogramar.com</h2><h3>Ejemplos JavaScript</h3></div>
<div style="color:blue;" id ="pulsador" onclick="ejemploObjetos()"> Probar </div>
</body>
</html>


c)
Código: [Seleccionar]
<!DOCTYPE html>
<html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<script type="text/javascript">
function operaciones(){
  this.suma = plus;
  this.resta = minus;
  this.mult = multi;
  this.division = divi;
}

function plus(x,y){ return x + y }
function minus(x,y){ return x - y }
function multi(x,y){ return x * y }
function divi(x,y){ return x/y }

function calcular(x, y, operacion){
var op = new operaciones();
if(operacion == '+'){return op.suma(x, y); }
else if(operacion == '-'){return op.resta(x, y);}
else if(operacion == '*'){return op.mult(x, y);}
else{return op.division(x, y);}
}

function ejemploObjetos() {
alert ('Resultado de calcular(3, 15, \'+\') es '+ calcular(3,15, '+'));
alert ('Resultado de calcular(3, 15, \'-\') es '+ calcular(3,15, '-'));
alert ('Resultado de calcular(3, 15, \'*\') es '+ calcular(3,15, '*'));
alert ('Resultado de calcular(3, 15, \'/\') es '+ calcular(3,15, '/'));
}
</script>
</head>
<body><div id="cabecera"><h2>Cursos aprenderaprogramar.com</h2><h3>Ejemplos JavaScript</h3></div>
<div style="color:blue;" id ="pulsador" onclick="ejemploObjetos()"> Probar </div>
</body>
</html>

30
Esto me pasa por ir con prisas, gracias por corregirme, adjunto mi solución:

a) Creando una función despedir no afectará ya que esta función no está definida para el objeto, el objeto tiene un método que aunque se llame de la misma manera, al definirla dentro del objeto tienen una asignación distinta.

No es lo mismo hacer:

~código~
 despedir();
~código~

que

GestionDeUsuarios.despedir();

Se está invocando distinto código.

31
Solución planteada para el ejercicio CU01145E del curso básico de programación web con JavaScript.

Código: [Seleccionar]
<!DOCTYPE html>
<html><head><meta charset="utf-8">
<script type="text/javascript">

var GestionDeUsuarios = {};

GestionDeUsuarios.preguntarNombre = function(){
var nombreUsuario = prompt("asignar nombre al usuario");
var idUsuario = prompt("asignar ID al usuario");
Object.defineProperty(GestionDeUsuarios, 'nombre', {value: nombreUsuario, writable:true,
enumerable:true, configurable:true});
Object.defineProperty(GestionDeUsuarios, 'id', {value: idUsuario, writable:true,
enumerable:true, configurable:true});
}
GestionDeUsuarios.despedir = function(){
alert("hasta luego " + this.nombre);
}
</script></head>
<body>
<button onclick="GestionDeUsuarios.preguntarNombre()"> Preguntar Nombre</button>
<button onclick="GestionDeUsuarios.despedir()"> despedir</button>
</body></html>

32
Saludos! Mis respuestas para el ejercicio CU01144E del curso elemental de programación web con JavaScript.

Código: [Seleccionar]
<!DOCTYPE html>
<html><head><meta charset="utf-8">
<script type="text/javascript">
function medico1(){
this.nombreObj = "Javier";
this.personasCuradasObj = 2;
this.especialidadObj = "cirugia";
this.mostrarDatos = datosMedico;
this.curarPersona = curarPersona;

}
function curarPersona(){
this.personasCuradasObj = this.personasCuradasObj + 1;
}
function datosMedico(){
var msg = "El medico creado con funciones externas se llama " + this.nombreObj +
", su especialidad es " + this.especialidadObj +
" y lleva curadas " + this.personasCuradasObj + " personas.";
alert(msg);
}
function medico2(){
this.nombreObj = "Enrique";
this.personasCuradasObj = 8;
this.especialidadObj = "Pediatria";
this.mostrarDatos = function (){
var msg = "El medico creado con funciones internas se llama " + this.nombreObj +
"\nSu especialidad es " + this.especialidadObj +
"\nY lleva curadas " + this.personasCuradasObj + " personas.";
alert(msg);
}
this.curarPersona = function(){
this.personasCuradasObj = this.personasCuradasObj + 1;
}


}
function creaMedico(){
var m1 = new medico1();
m1.mostrarDatos();
var m2 = new medico2();
m2.mostrarDatos();
}
</script></head>
<body onload="creaMedico()">
</body></html>

33
Respuesta al ejercicio CU01143E del tutorial de programador web con JavaScript.

No veo mucha utilidad la creación de un objeto al menos en este ejercicio, ya que tal cual salga de la función crearCuentaBancaria() entiendo que todos los datos se borran verdad?

Código: [Seleccionar]
<!DOCTYPE html>
<html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<script type="text/javascript">
function crearObjetoCuenta(nombreCB,apellidoCB,saldoCB){
this.nombreCuenta = nombreCB;
this.apellidoCuenta = apellidoCB;
this.saldoCuenta = saldoCB;
this.mostrarCuenta = function (){
var msg = "Se ha creado una cuenta bancaria, esto son sus datos: \n" +
"Nombre: " + this.nombreCuenta +
"\nApellido: " + this.apellidoCuenta +
"\nSaldo: " + this.saldoCuenta;
alert(msg);
}
}
function crearCuentaBancaria(){
var nombre = prompt("Introduce nombre titular");
var apellido = prompt("Introducie apellido titular");
var saldo = prompt("introduce saldo");

var cuentaBancaria = new crearObjetoCuenta(nombre,apellido,saldo);
cuentaBancaria.mostrarCuenta();
}
</script></head>
<body onload="crearCuentaBancaria()">
</body></html>

34
No recordaba esa característica del cloneNode, gracias!!

35
Respuesta al ejercicio CU01142E del curso básico de programador web con JavaScript.

No he mirado que existiera el punto antes que el @, osea, si se pone nombre.apellido@gmailcom.

O si se pone nombre.apellido@gmail.com no saltaría el error pero porque detecta el primer punto, como el enunciado no dice nada sobre estos casos no he trabajado mucho en eso:

Código: [Seleccionar]
<!DOCTYPE html>
<html><head><title></title><meta charset="utf-8">
<script type="text/javascript">
function validar(){
var nodeInputs = document.getElementsByClassName("inputs");

if(nodeInputs[0].value.length<3){
alert("El nombre no cumple tener al menos tres letras");
}

nodeInputs[2].value = nodeInputs[2].value.replace(/at/g,"@");

if(nodeInputs[2].value.indexOf("@")==-1 && nodeInputs[2].value.indexOf(".")==-1){
alert("Falta ambos caracteres en el correo electrónico");
}else if(nodeInputs[2].value.indexOf("@")==-1){
alert("Falta el símbolo @ en el correo electrónico");
}else if(nodeInputs[2].value.indexOf(".")==-1){
alert("Falta el símbolo . en el correo electrónico");
}
nodeInputs[2].value = nodeInputs[2].value.toLowerCase();
}
</script>
</head>
<body>
<form name="form1" action="https://www.aprenderaprogramar.com" method="GET"  onsubmit="validar()">
<input class="inputs" type="text" name="nombre"><input class="inputs" type="text" name="apellidos">
<input class="inputs" type="text" name="correo"><input type="submit" value="submit">
</form>
</body>
</html>

36
Ejercicio CU01141E del tutorial de programación web con JavaScript:

1) Me ha costado identificarlo pero creo que por fin lo entendí, al tener esto:
var nodoHijo = nodoPadre;
document.body.appendChild(nodoHijo);

Al principio pensaba que appendChild creaba un espacio en el body para meter el nodoHijo, pero si fuera así habría metido a nodoHijo como un nodo nuevo y hubiera funcionado correcto, pero creo que al hacer la igualdad en la primera linea, tanto nodoHijo como nodoPadre actúan como "punteros", es decir, parece que apuntaran al mismo sitio, y appendChild hace como de apuntador entre body y ese nodo, es por eso que nodoPadre desaparece y lo reemplaza por nodoHijo, por que apuntan al mismo sitio, en cambio al hacer un cloneNode lo que haces es crear un nuevo "puntero" y así appendChild sí podrá apuntar a nodoHijo sin cargarse nodoPadre, ya que son distintos "punteros".

digo punteros y seguro que no es así, pero es la única manera que se me ocurre de describir y entender esto.


2)
Código: [Seleccionar]
<!DOCTYPE html>
<html><head> <title>Curso JavaScript aprenderaprogramar.com</title><meta charset="utf-8">
<style type="text/css">
body {font-family: sans-serif; text-align:center; }
div {border-style:solid;margin: 30px; padding:25px; display:inline-block;}
div div {background-color: yellow;}
</style>
<script type="text/javascript">
function crearNodoHijo(nodoPadre) {
var nodoDiv = document.createElement("div");
var nodoTxt = document.createTextNode("Pulsa aquí para duplicar este nodo");
nodoDiv.onclick = nodoPadre.onclick;
nodoDiv.className = "nodoNuevo";
nodoDiv.appendChild(nodoTxt);
document.body.appendChild(nodoDiv);
}
</script>
</head>
<body>
<div id="nodoRaiz" onclick="crearNodoHijo(this)">Pulsa aquí para duplicar este nodo</div>
</body></html>



3)
cambiando "var nodoHijo = nodoPadre;"  por  var nodoHijo = nodoPadre.cloneNode(true);  creo que resuelve este apartado, ya que appendChild vincula el nuevo nodo al final del Body y por eso creo que no hace falta añadir nada más, quedando así:

Código: [Seleccionar]
<!DOCTYPE html>
<html><head> <title>Curso JavaScript aprenderaprogramar.com</title><meta charset="utf-8">
<style type="text/css">
body {font-family: sans-serif; text-align:center; }
div {border-style:solid;margin: 30px; padding:25px; display:inline-block;}
div div {background-color: yellow;}
</style>
<script type="text/javascript">
function crearNodoHijo(nodoPadre) {
var nodoHijo = nodoPadre.cloneNode(true);
document.body.appendChild(nodoHijo);
}
</script>
</head>
<body>
<div id="nodoRaiz" onclick="crearNodoHijo(this)">Pulsa aquí para duplicar este nodo</div>
</body></html>

37
Lo iba a hacer pero este ejercicio nos recomendaba hacerlo en 3 archivos distintos aparte que otro usuario puso este ejercicio también en diferentes archivos y por eso decidí hacerlo así, pero para la próxima lo hago junto no hay  problema.

39
Saludos! Mi respuesta para el ejercicio CU01140E del tutorial de JavaScript desde cero.

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head> <title>Curso JavaScript aprenderaprogramar.com</title>
<meta charset="utf-8">
<style type="text/css">
div {border-style:solid;margin:2px;display:inline-block;}
</style>
<script type="text/javascript">
var num = 1, numAnidado = 0;
function anadir(anidar){
var nodoDiv = document.createElement("div");
nodoDiv.id = "id" + num;
var nodoTxt = document.createTextNode("nodo creado " + num);
nodoDiv.appendChild(nodoTxt);
if(anidar){
var nodoAnidado = document.getElementById("id" + numAnidado);
nodoAnidado.appendChild(nodoDiv);
numAnidado = num;
}else{
var nodoPadre = document.getElementsByTagName("body");
nodoPadre[0].innerHTML += "</br>";
nodoPadre[0].appendChild(nodoDiv);
}
num = num+1;
}
</script>
</head>
<body>
<div id="id0">
Curso JavaScript aprendeaprogramar.com
</div>
</br>
<button class="b1" type="button" onclick="anadir(0)">añadir al final</button>
<button class="b2" type="button" onclick="anadir(1)">anidar</button>
</body>
</html>

40
Solución planteada al ejercicio CU01139E del curso elemental de programación web con JavaScript.

El archivo del estilo está casi en su totalidad copiado del ejemplo ya que el body, th,tr,td no cambian y le añadí poca cosa.

el archivo html sí que lo hice sin ver el ejemplo y me salió diferente.

La "faena" está en el archivo functions.js, espero que os parezca bien.

functions.js
Código: [Seleccionar]
var editando = false, nombres = ["alimento","calorias","grasas","proteinas","carbohidratos"]; //variable es para tener guardado los nombres de las id's de los inputs, así lo manipulo en el for
function editar(nodo){
if(!editando){
  editando=true;
  var nodoPadre = nodo.parentNode, nuevoHTML = "";
  for(var i=0;i<5;i++){ nuevoHTML = nuevoHTML + "<td>"  + "<input type='text' name='" + nombres[i] + "' size='10' value='" + nodoPadre.childNodes[i].firstChild.nodeValue + "' ></td>"}
  nuevoHTML = nuevoHTML + "<td>En edición</td>";
  nodoPadre.innerHTML = nuevoHTML;
  nodoPadre.id = "modificado";
  document.getElementById('botones').style.display = "inline";
}else{alert("Solo se puede editar una línea. Recargue la página para poder editar otra");}
}
function enviarForm(){
var crearForm = "<form id='formulario' action='https://www.aprenderaprogramar.es' method='get'>"
var nodoModificado = document.getElementById('modificado');
var nodoBotones = document.getElementById('botones');
for(var i=0;i<5;i++){
 crearForm = crearForm + "<input type='text' name='" + nombres[i] + "' value='" + nodoModificado.childNodes[i].firstChild.value + "' >";
 }
 nodoBotones.innerHTML = crearForm;
 document.getElementById('formulario').submit();
}

html
Código: [Seleccionar]
<!DOCTYPE html>
<html><head><meta charset="utf-8" />
<link rel="stylesheet" href="styles.css" type="text/css" >
<script type="text/javascript" src="functions.js"></script>
</head>
<body>
<table>
<tr><th>Alimento</th><th>Calorías (kCal)</th><th>Grasas (g)</th><th>Proteína (g)</th><th>Carbohidratos (g)</th><th>Opciones</th></tr>
<tr><td>Arándano</td><td>49</td><td>0.2</td><td>0.4</td><td>12.7</td><td class="editar" onclick="editar(this)">Editar</td></tr>
<tr><td>Plátano</td><td>90</td><td>0.3</td><td>1.0</td><td>23.5</td><td class="editar" onclick="editar(this)">Editar</td></tr>
<tr><td>Cereza</td><td>46</td><td>0.4</td><td>0.9</td><td>10.9</td><td class="editar" onclick="editar(this)">Editar</td></tr>
<tr><td>Fresa</td><td>37</td><td>0.5</td><td>0.8</td><td>8.3</td><td class="editar" onclick="editar(this)">Editar</td></tr>
</table>
<div id="botones">
<p>Pulse Aceptar para guardar los cambios o Cancelar para anularlos</p>
<button class="boton" type="button" onclick="enviarForm()">Aceptar</button><button class="boton" type="button" onclick="location.reload()">Cancelar</button>
</div>
</body>
</html>


styles.css
Código: [Seleccionar]
body {font-family: Arial, Helvetica, sans-serif; background-color: #FFF8DC;}
#botones {
display:none;
}
#formulario{
  display:none;
}
table { font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; font-size: 12px; margin: 45px; width: 550px;
    text-align: center; border-collapse: collapse; }
th { font-size: 13px; font-weight: normal; padding: 8px; background: #b9c9fe; border-top: 4px solid #aabcfe;
    border-bottom: 1px solid #fff; color: #039; }
td { padding: 8px; background: #e8edff; border-bottom: 1px solid #fff; color: #669; border-top: 1px solid transparent; }
tr:hover td { background: #d0dafd; color: #339; }
.boton {color: black; padding: 5px; margin: 10px;
  background-color: #b9c9fe;
  font-weight: bold; }
.editar {color: blue; cursor:pointer;}

Páginas: 1 [2] 3

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

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".