Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/11/2014, 04:56
dglypho
 
Fecha de Ingreso: noviembre-2014
Mensajes: 27
Antigüedad: 9 años, 5 meses
Puntos: 0
Cambiar color de una celda mediante un boton

Hola a todos, siguiendo con otros dos temas que tengo en este foro:
http://www.forosdelweb.com/f13/cambiar-color-td-con-dom-1114860/
http://www.forosdelweb.com/f13/crear-tabla-con-javascript-1114397/

En los que para resumir un poco tenía que crear una tabla con JavaScript y cambiar el color de una celda al pulsarla. Ahora bien lo que quiero hacer es que cuando pulse un botón las celdas que haya pulsado cambien de color y me aparezca un contador de cuantas de estas casillas hay pulsadas. Bien hasta ahora mi código HTML es el siguiente que de momento no me esta dando ningún problema:

Código HTML:
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title></title>
	<script type="text/javascript" src="js/funciones.js"></script>
</head>
<body onload="crearTabla()">
	<header></header>
	<article>
		<section id="butaca">
			<p id="numsala"></p>
			<p id="titulo"></p>
			<table id="tabla"></table>
                         <div id="reservar">
				<p>Cuantos con precio reducido</p>
				<input type="text"><br>
				<button id="comprar">Comprar</button>
			</div>
		</section>
	</article>
</body>
</html> 
Y este es mi JavaScript al que le he añadido un evento para que me cambie de color al pulsar el botón:

Código Javascript:
Ver original
  1. var columna=new Array();
  2. columna[0]=1;
  3. columna[1]=2;
  4. columna[2]=3;
  5. columna[3]=4;
  6. columna[4]=5;
  7. columna[5]=6;
  8. var filas=new Array();
  9. filas[0]=1;
  10. filas[1]=2;
  11. filas[2]=3;
  12. filas[3]=4;
  13. filas[4]=5;
  14. var tabla=new Array();
  15. tabla[0]=columna;
  16. tabla[1]=filas;
  17.          
  18. function crearTabla(){
  19.     var tbl = document.getElementById("tabla");
  20.     var tblBody = document.createElement("tbody");
  21.     for (var i = 0; i < columna.length; i++) {
  22.         var fila = document.createElement("tr");
  23.         for (var j = 0; j < filas.length; j++) {
  24.             var celda = document.createElement("td");
  25.  
  26.             celda.onclick=function(){
  27.                 var div=document.getElementById("reservar");
  28.                 div.style.display='block';
  29.                 var compra=document.getElementById("comprar");
  30.                 compra.onclick=function(){
  31.                     if(celda.style.background=='orange'){
  32.                         celda.style.background='red';
  33.                     }
  34.                 }
  35.                 if(this.style.background=='green'){
  36.                     this.style.background='orange';
  37.                 }
  38.                 else{
  39.                     this.style.background='green';
  40.                 }
  41.             }
  42.  
  43.             var textoCelda = document.createTextNode(i+"-"+j);
  44.             celda.appendChild(textoCelda);
  45.             fila.appendChild(celda);
  46.         }
  47.         tblBody.appendChild(fila);
  48.     }
  49.     tbl.appendChild(tblBody);
  50.     tbl.setAttribute("border", "2");
  51. }

El caso es que lo he intentado hacer de esta otra forma y no me funciona tampoco:

Código Javascript:
Ver original
  1. var compra=document.getElementById("comprar");
  2.            
  3.             celda.onclick=function(){
  4.                 var div=document.getElementById("reservar");
  5.                 div.style.display='block';
  6.                 if(this.style.background=='green'){
  7.                     this.style.background='orange';
  8.                 }
  9.                 else{
  10.                     this.style.background='green';
  11.                 }
  12.             }
  13.  
  14.             compra.onclick=function(){
  15.                 if(celda.style.background=='orange'){
  16.                     celda.style.background='red';
  17.                 }
  18.             }

¿Que solución puede tener este problema?