2017-05-03 99 views
1

我有一个从数据库动态创建的表。基于价值的Html热图

  for (int m = 0; m < table.size(); m++) { 

       out.print("<tr>"); 

       for (int k = 0; k < table.get(0).length; k++) 

       { out.print("<td width='10'>"); 
        out.print(table.get(m)[k]); 
        out.println("</td>"); 
       } 
       out.println("</tr>"); 

      } 

我想根据它的值使每个单元格着色,表格的输出是;

My image

+0

你可以只后运行的脚本该表是为了检查数值和更新样式而设计的(可能必须有更好的方法) – ArmaGeddON

+1

你有样品吗?我无法想象@ArmaGeddON – mstfky

+0

你可以遍历所有你想改变的TD元素,检查它们的值并相应地改变样式 – ArmaGeddON

回答

0

使用HSL,而不是RGB来代表你的颜色。

你需要这样的事情:

let table = '<table>'; 
 

 
for (let i = 0; i < 4; ++i) { 
 

 
    table += '<tr>'; 
 

 
    for(let k = 0; k < 10; ++k) { 
 
    const value = Math.random(); 
 
    const h = 240 - value * 240; 
 
    
 
    table += '<td style="background: hsl(' + h + ', 100%, 50%)">' + value.toFixed(2) + '</td>'; 
 
    } 
 

 
    table += '</tr>'; 
 
} 
 

 
document.write(table);
table { 
 
    border: 1px solid #000; 
 
    border-collapse: collapse; 
 
    font-family: Sans-Serif; 
 
    color: #000; 
 
} 
 

 
td { 
 
    border: 2px solid #000; 
 
    padding: .5rem; 
 
}

理想的情况下,在你的后台添加style属性,以便您发送给客户端的网页已有的颜色。如果由于任何原因你不能这样做,那么只需浏览客户端中的单元格,读取它们的值并将它们添加为适当的背景颜色。

使用HSL的其他组件可以生成不同的颜色模式。例如,单色调的规模,有黑色和白色在其两端与您所选择的在中间的颜色,在这种情况下,蓝色:

let table = '<table>'; 
 

 
for (let i = 0; i < 4; ++i) { 
 

 
    table += '<tr>'; 
 

 
    for(let k = 0; k < 10; ++k) { 
 
    const value = Math.random(); 
 
    const l = value * 100; 
 
    const textColor = l < 35 ? '#FFF' : '#000'; 
 
    
 
    table += '<td style="background: hsl(200, 100%, ' + l + '%); color: ' + textColor + '">' + value.toFixed(2) + '</td>'; 
 
    } 
 

 
    table += '</tr>'; 
 
} 
 

 
document.write(table);
table { 
 
    border: 1px solid #000; 
 
    border-collapse: collapse; 
 
    font-family: Sans-Serif; 
 
    color: #000; 
 
} 
 

 
td { 
 
    border: 2px solid #000; 
 
    padding: .5rem; 
 
}