Introducción a AJAX

14.9. Ejercicio 9

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Ejercicio 9 - Crear, eliminar y modidicar nodos DOM</title>
<script type="text/javascript">
function genera() {
  // Generar números aleatorios entre 0 y 10
  var numero1 = (Math.random()*10).toFixed();
  var numero2 = (Math.random()*10).toFixed();

  // Obtener los nodos padre de los párrafos
  var primero = document.getElementById("primero");
  var segundo = document.getElementById("segundo");

  // Obtener el cada uno de los párrafos
  var parrafoAnterior1 = primero.firstChild;
  var parrafoAnterior2 = segundo.firstChild;

  // Crear el nuevo párrafo
  var parrafo1 = document.createElement("p");
  var texto1 = document.createTextNode(numero1);
  parrafo1.appendChild(texto1);
  // Si ya existía un párrafo, sustituirlo. Si no, añadirlo
  if(parrafoAnterior1 != null) {
    primero.replaceChild(parrafo1, parrafoAnterior1);
  }
  else {
    primero.appendChild(parrafo1);
  }

  // Crear el otro nuevo párrafo
  var parrafo2 = document.createElement("p");
  var texto2 = document.createTextNode(numero2);
  parrafo2.appendChild(texto2);
  // Si ya existía un párrafo, sustituirlo. Si no, añadirlo
  if(parrafoAnterior2 != null) {
    segundo.replaceChild(parrafo2, parrafoAnterior2);
  }
  else {
    segundo.appendChild(parrafo2);
  }
}

function compara() {
  // Obtener los nodos padre de los párrafos
  var primero = document.getElementById("primero");
  var segundo = document.getElementById("segundo");

  // Obtener los párrafos (existen varios métodos...)
  var parrafo1 = primero.getElementsByTagName("p")[0];
  var parrafo2 = segundo.firstChild;

  // Obtener los números a través del nodo Text de cada
  //  nodo de tipo Element de los parrafos
  var numero1 = parseInt(parrafo1.firstChild.nodeValue);
  var numero2 = parseInt(parrafo2.firstChild.nodeValue);

  // Determinar el nodo del párrafo cuyo nodo es mayor
  var parrafoMayor = (numero1 > numero2)? parrafo1 : parrafo2;

  // Obtener el nodo padre del párrafo resultado
  var resultado = document.getElementById("resultado");

  var parrafoAnterior = resultado.firstChild;
  // Si ya existía un párrafo de resultado anterior, sustituirlo. Si no, añadirlo
  if(parrafoAnterior != null) {
    resultado.replaceChild(parrafoMayor, parrafoAnterior);
  }
  else {
    resultado.appendChild(parrafoMayor);
  }
}
</script>

<style type="text/css">
#primero, #segundo, #resultado {width: 150px; height: 150px; border: thin solid silver; background: #F5F5F5; float: left; margin:20px; font-size: 6em; color: #333; text-align: center; padding: 5px; font-family:Arial, Helvetica, sans-serif;}
#primero p, #segundo p, #resultado p {margin:.2em 0;}
#resultado {margin-left:1.3em; border-color: black;}
.clear {clear:both;}
#compara {margin-left:11em;}
#genera {font-size:1.2em; margin-left:8em;}
</style>
</head>

<body>

<input id="genera" type="button" value="¡¡ Genera !!" onclick="genera()" />

<div id="primero"></div>

<div id="segundo"></div>

<div class="clear"></div>

<input id="compara" type="button" value="<< Comparar >>" onclick="compara()" />

<div id="resultado"></div>

</body>
</html>

Descargar ZIP con la solución completa