I am trying my luck here to learn from each other how to solve this.
- I need intake only td with no class and ignore all td with class, to get total number of boxes something like this to replace below - var spans = $(“#tlb tr:not(.twentyNine .thirty .thirtyOne) td”), instead of var spans = document.getElementById(‘tbl’).getElementsByTagName(‘td’); but it not working, and :not does not work in ie
Reason for this, i group 9 box as 1 , for example if user type 30, box 31(9 boxes) will activate a class which display none, so I only intake all td with no class to exclude box 31(9 boxes), in this case spans.length will return 270 (30x9)
- black = 12, red = 53, lightblue = 19, lime = 34, yellow = 17, pink = 42, green = 102;
I would like to first have 12 black fixed on “b” spot Followed by 53 red to be random place within only the ‘r’ spots (‘r’ spot is every 3 row, first 15 box) and unfilled ‘r’ spots + rest of unfilled box random (19,34,17,42,102 each different color)
There should be no unfilled color.
Thank you
<table id="tbl" border='1'>
<tbody>
<tr>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>b</td>
<td>x</td>
<td>x</td>
<td>x</td>
</tr>
<tr>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>b</td>
<td>x</td>
<td>x</td>
<td>x</td>
</tr>
<tr>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>x</td>
<td>x</td>
<td>b</td>
<td>x</td>
<td>x</td>
<td>x</td>
</tr>
<tr>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>b</td>
<td>x</td>
<td>x</td>
<td>x</td>
</tr>
<tr>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>b</td>
<td>x</td>
<td>x</td>
<td>x</td>
</tr>
<tr>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>x</td>
<td>x</td>
<td>b</td>
<td>x</td>
<td>x</td>
<td>x</td>
</tr>
<tr>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>b</td>
<td>x</td>
<td>x</td>
<td>x</td>
</tr>
<tr>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>b</td>
<td>x</td>
<td>x</td>
<td>x</td>
</tr>
<tr>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>x</td>
<td>x</td>
<td>b</td>
<td>x</td>
<td>x</td>
<td>x</td>
</tr>
<tr>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>b</td>
<td>x</td>
<td>x</td>
<td>x</td>
</tr>
<tr>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>b</td>
<td>x</td>
<td>x</td>
<td>x</td>
</tr>
<tr>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>r</td>
<td>x</td>
<td>x</td>
<td>b</td>
<td>x</td>
<td>x</td>
<td>x</td>
</tr>
<tr>
<td class="twentyNine">x</td>
<td class="twentyNine">x</td>
<td class="twentyNine">x</td>
<td class="thirty">x</td>
<td class="thirty">x</td>
<td class="thirty">x</td>
<td class="thirty-one">x</td>
<td class="thirty-one">x</td>
<td class="thirty-one">x</td>
</tr>
<tr>
<td class="twentyNine">x</td>
<td class="twentyNine" >x</td>
<td class="twentyNine" >x</td>
<td class="thirty">x</td>
<td class="thirty">x</td>
<td class="thirty">x</td>
<td class="thirty-one">x</td>
<td class="thirty-one">x</td>
<td class="thirty-one">x</td>
</tr>
<tr>
<td class="twentyNine" >r</td>
<td class="twentyNine" >r</td>
<td class="twentyNine" >r</td>
<td class="thirty">r</td>
<td class="thirty">r</td>
<td class="thirty">r</td>
<td class="thirty-one">r</td>
<td class="thirty-one">r</td>
<td class="thirty-one">r</td>
</tr>
</tbody></table>
<button onclick=initTblColors()>Random Test</button>
<script type="text/javascript">
var tblColors = [];
Number.prototype.random = function() { return Math.floor(Math.random() * this); }
var sat = [17,34,51,68,85,103,120,137,154,171,188,205]; // fixed spot - 12 black block out
// as the number of boxes increase, I treat 9 boxes as 1, so in this case there are 31 boxes, total 31 x 9 = 279 boxes
var noOfBox = 29; // user can change 29 ,30, 31
function initTblColors() {
if (noOfBox == 29)
{
// $(".twentyNine").removeClass("twentyNine");
}else if (noOfBox == 30)
{
$(".twentyNine").removeClass("twentyNine");
$(".thirty").removeClass("thirty");
}else if (noOfBox == 31)
{
$(".twentyNine").removeClass("twentyNine");
$(".thirty").removeClass("thirty");
$(".thirty-one").removeClass("thirty-one");
}
var spans = document.getElementById('tbl').getElementsByTagName('td'); // Unsure what to type here , I want it to target all td with no class name of tbl label
var ColorRemainWithoutBlack = parseInt(spans.length) - 12;
for (var i = 0; i < spans.length; i++) {
spans[i].style.backgroundColor = tblColors[i]; }
var rc, tc1, tc2;
for (var j=0; j<ColorRemainWithoutBlack; j++) {
rc = (ColorRemainWithoutBlack).random();
tc1 = spans[j].style.backgroundColor;
tc2 = spans[rc].style.backgroundColor;
spans[rc].style.backgroundColor = tc1;
spans[j].style.backgroundColor = tc2;
}
for (var k=0; k<sat.length; k++) {
rc = sat[k];
tc1 = spans[rc].style.backgroundColor;
tc2 = spans[ColorRemainWithoutBlack+1+k].style.backgroundColor;
spans[ColorRemainWithoutBlack+1+ k].style.backgroundColor = tc1;
spans[rc].style.backgroundColor = tc2;
}
}summate(); // initTblColors();
function summate() {
var colorPicks = ['red','lightblue','lime','yellow','pink']; // or ['red','blue','green','yellow','pink']
tblColors.length = 0;
var cnt;
var cnt2;
var cnt3;
var cnt4;
var cnt5;
var cnt = 19; // value is generated, not fixed
var cnt2 = 34;// value is generated, not fixed
var cnt3 = 17;// value is generated, not fixed
var cnt4 = 42;// value is generated, not fixed
var cnt5 = 102;// value is generated, not fixed
for (var j=0; j<cnt; j++) {
tblColors.push(colorPicks[0]);
}
for (var k=0; k<cnt2; k++) {
tblColors.push(colorPicks[1]);
}
for (var j=0; j<cnt3; j++) {
tblColors.push(colorPicks[2]);
}
for (var j=0; j<cnt4; j++) {
tblColors.push(colorPicks[3]);
}
for (var j=0; j<cnt5; j++) {
tblColors.push(colorPicks[4]);
}
for (var i=0; i<sat.length; i++) { tblColors.push('black');} // 12 black
// remaining 53 red, to be generated within only the 'r' spots
initTblColors();
}
</script>