Ayuda con ejercicios de JavaScript

Buenas, pues el Lunes tengo examen final de JavaScript, y no logro finalizar los ejercicios de forma correcta por un par de chorradas que me traen dolor de cabeza, y si logro hacer estos ejercicios correctamente seguramente tenga posibilidades de aprobar el examen.

Estoy pillado ( de momento [+risas] ) con dos ejercicios:

Ejercicio 1

Al pulsar un botón se genera una tabla, y cada celda de la tabla debe tener un color de fondo diferente, y también cada celda debe tener escrito el nombre del color de fondo de dicha celda.

Pego el código:

<script language="javascript">
function GeneraTabla(){

var Colores = new Array ("red","yellow","blue","green","black","pink","brown","purple","gray");
var ColorFondo="";

   document.write('<center><table border="2" bordercolor="black">');
   document.write('<tr>');      
   
         for (i=0; i<=Colores.length-1; i++)
         
   document.write('<td bgcolor="">&nbsp</td>'); //supongo que la clave es en esta línea, de alguna forma habrá llamar a la función DevuelveColor() y ésta se encargara de hacer el resto en las celdas
   document.write('</tr></center></table>');

}

//función creada por el profesor, no creo que me mande hacer una igual, ademas de que no entiendo como lo ha hecho

function DevuelveColor(){
    numPosibilidades = 8
    aleat = Math.random() * numPosibilidades
    aleat = Math.round(aleat)
    Color= parseInt(0) + aleat
    return Colores[Color]
}


</script>


Lo que no se hacer es como aplicar a esa tabla un color de forma aleatoria a las celdas y que se ponga el nombre del color en las celdas, tengo creada la tabla pero como ya he comentado en el código, como llamo a la función DevuelveColor() para que se aplique en las celdas el color de fondo y el nombre del color.

Ejercicio 2

Introduzco en el área de texto vocales, y tras pulsar el botón que le he llamado "Generar salida", debe aparecer en cinco contadores diferentes ("NumA","NumE","NumI","NumO","NumU") el número de veces que aparecen las vocales en la caja de texto.

Aquí el código:

<script language="javascript">

function inicializa()
{

   document.MiForm.NumA.value=0;
   document.MiForm.NumE.value=0;
   document.MiForm.NumI.value=0;
   document.MiForm.NumO.value=0;
   document.MiForm.NumU.value=0;

}


function ContarVocales(){

var Entrada=document.MiForm.SMS.value;
var C="";

for (i=0;i<=Entrada.length-1;i++)

   C=Entrada.charAt(i);
      
         switch (C.toUpperCase())
   {
      case "A":
      C=document.MiForm.NumA.value +1;
      break;
      case "E":
      C=document.MiForm.NumE.value +1;
      break;
      case "I":
      C=document.MiForm.NumI.value +1;
      break;
      case "O":
      C=document.MiForm.NumO.value +1;
      break;
      case "U":
      C=document.MiForm.NumU.value +1;
      break;
   }
   

}
</script>


No logro saber como indicarle al Switch como debe contabilizar y como mandárselo a los contadores ("NumA","NumE","NumI","NumO","NumU") que son simples cajas de texto.


He probado a enviar un correo al profesor, pero llevo sin contestación desde ayer que lo mande.
Perdona que no te ayude con el primero pero veo que me voy a tirar mas de 15 min y quiero acostarme ya :P. Si todavía te hace falta me lo escribes y mañana te echo una mano.

Lo que pides del segundos es fácil:

<script language="javascript">

function inicializa()
{

   document.MiForm.NumA.value=0;
   document.MiForm.NumE.value=0;
   document.MiForm.NumI.value=0;
   document.MiForm.NumO.value=0;
   document.MiForm.NumU.value=0;

}


function ContarVocales()
{
  var Entrada=document.MiForm.SMS.value;

  var NumA = document.MiForm.NumA.value;
  var NumE = document.MiForm.NumE.value;
  var NumI = document.MiForm.NumI.value;
  var NumO = document.MiForm.NumO.value;
  var NumU = document.MiForm.NumU.value;

  var C = "";

  for (i=0;i<=Entrada.length-1;i++)
  {
   C=Entrada.charAt(i);
      
   switch (C.toUpperCase())
   {
         case "A": NumA++; break;
         case "E": NumE++; break;
         case "I": NumI++; break;
         case "O": NumO++; break;
         case "U": NumU++; break;
   }
  }
}
</script>


No lo he probado, mira a ver si funciona.

Saludos.
JAPosti escribió:Perdona que no te ayude con el primero pero veo que me voy a tirar mas de 15 min y quiero acostarme ya :P. Si todavía te hace falta me lo escribes y mañana te echo una mano.

Lo que pides del segundos es fácil:

<script language="javascript">

function inicializa()
{

   document.MiForm.NumA.value=0;
   document.MiForm.NumE.value=0;
   document.MiForm.NumI.value=0;
   document.MiForm.NumO.value=0;
   document.MiForm.NumU.value=0;

}


function ContarVocales()
{
  var Entrada=document.MiForm.SMS.value;

  var NumA = document.MiForm.NumA.value;
  var NumE = document.MiForm.NumE.value;
  var NumI = document.MiForm.NumI.value;
  var NumO = document.MiForm.NumO.value;
  var NumU = document.MiForm.NumU.value;

  var C = "";

  for (i=0;i<=Entrada.length-1;i++)
  {
   C=Entrada.charAt(i);
      
   switch (C.toUpperCase())
   {
         case "A": NumA++; break;
         case "E": NumE++; break;
         case "I": NumI++; break;
         case "O": NumO++; break;
         case "U": NumU++; break;
   }
  }
}
</script>


No lo he probado, mira a ver si funciona.

Saludos.



Lo primero todo es gracias por ayudarme, precisamente ese método lo probé ayer y misteriosamente no me funciona, pero lo he logrado de otra forma:

<script language="javascript">

function inicializa()
{

   document.MiForm.NumA.value=0;
   document.MiForm.NumE.value=0;
   document.MiForm.NumI.value=0;
   document.MiForm.NumO.value=0;
   document.MiForm.NumU.value=0;

}


function ContarVocales()
{

var Entrada=document.MiForm.SMS.value;
var C="";

for (i=0;i<=Entrada.length-1;i++)
   {
   var C=Entrada.charAt(i);
   switch (C.toUpperCase())
      {
      case "A":
      document.MiForm.NumA.value=parseInt(document.MiForm.NumA.value) +1;
      break;
      case "E":
      document.MiForm.NumE.value=parseInt(document.MiForm.NumE.value) +1;
      break;
      case "I":
      document.MiForm.NumI.value=parseInt(document.MiForm.NumI.value) +1;
      break;
      case "O":
      document.MiForm.NumO.value=parseInt(document.MiForm.NumO.value) +1;
      break;
      case "U":
      document.MiForm.NumU.value=parseInt(document.MiForm.NumU.value) +1;
      break;
      }
   
   }
}
</script>


Es decir, el segundo ejercicio esta hecho [oki]

El primero sigue igual [mamaaaaa]
(mensaje borrado)
3 respuestas