Para empezar destacar que la variable "gran" es totalmente inútil, pues el bucle se va a parar cuando j<20 y, siendo el bucle for el que incrementa el valor de j, nunca se va a dar el caso de que j>=20 a no ser que le insertes una línea en que le varíes tu el valor.
Bueno, a mi si que me funciona siempre y cuando le ponga 3 números distintos. Estos es debido a que en el bucle
Código
siempre se queda en la primera condición y por eso lo pinta todo del mismo color. Por lo tanto podrías crear una variable que opere dentro de un rango desde 1 a 3 para seleccionar cada uno de los distintos valores y con ella determinar dentro de qué sentencia condicional debe entrar.
for (x; x < cont; x++) // valor primer input... { if (cont == v1) document.write("<td bgcolor=\"" + fons1 + "\"></td>") else if (cont == v2) document.write("<td bgcolor=\"" + fons2 + "\"></td>") else if (cont == v3) document.write("<td bgcolor=\"" + fons3 + "\"></td>") }
Por otro lado no se si pretendes hacer una tabla de forma cuadrada o rectangular o la forma te da igual, pero en el caso de querer hacer un cuadrado deberías modificar el valor de "j" dentro del bucle que crea las celdas.
Esta es una posible solución en la que a lo primero que te he dicho en la que te ahorras las variables v1, v2, v3 y gran
Código
function crearTaula() { var fons1 = document.getElementById("color1").value; var fons2 = document.getElementById("color2").value; var fons3 = document.getElementById("color3").value; var val1 = document.getElementById("valor1").value; var val2 = document.getElementById("valor2").value; var val3 = document.getElementById("valor3").value; var cont = 0; document.write("<table>"); for (i = 0; i < 20; i++) // per generar files { document.write("<tr>"); for (j = 0; j < 20; j++) // per generar cel·les { cont=cont%3+1; if (cont == 1) {for (x=0; x < val1; x++) {document.write("<td bgcolor=\"" + fons1 + "\"></td>")} }else if (cont == 2){for (x=0; x < val2; x++) { document.write("<td bgcolor=\"" + fons2 + "\"></td>")} }else if (cont == 3){for (x=0; x < val3; x++) { document.write("<td bgcolor=\"" + fons3 + "\"></td>")}} } document.write("</tr>"); } document.write("</table>"); }
Un saludo.