2017-05-03 100 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; 
 
}