Таблица безопасных цветов
Надо написать код, который выводил бы таблицу безопасных цветов на экран. Подумал, написал вот это
draw.createPalette=function(){
for(var r=0; r<=255; r+=51){
pNode=document.createElement("table");
pNode.className="palette";
document.body.appendChild(pNode);
for(var g=0; g<=255; g+=51){
var pTr=document.createElement("tr");
pNode.appendChild(pTr);
for(var b=0; b<=255; b+=51){
var pTd=document.createElement("td");
pTd.onclick=function(color){return function(){draw.color=color}}(pTd.style.background="#"+r.toString(16)+g.toString(16)+b.toString(16));
pTr.appendChild(pTd);
}
}
}
}
Работает только в файерфоксе, и то лишь частично (не все цвета появляются). Тогда я написал так:
draw.createPalette=function(){
for(var r=0; r<=255; r+=51){
pNode=document.createElement("table");
pNode.className="palette";
document.body.appendChild(pNode);
for(var g=0; g<=255; g+=51){
var pTr=document.createElement("tr");
pNode.appendChild(pTr);
for(var b=0; b<=255; b+=51){
var pTd=document.createElement("td");
pTd.onclick=function(color){return function(){draw.color=color}}(pTd.style.background="rgb("+r+","+g+","+b+")");
pTr.appendChild(pTd);
}
}
}
}
Ура! Заработало, но вот сюрприз: IE6 наотрез отказался выводить её на экран. Почему? Вроде смотрел, ни слова про то, что IE6 rgb не поддерживает. В чём фишка? P.S. Кстати, почему первый код не работает? P.P.S. Забыл дописать: при клике на каждую ячейку переменной draw.color присваивается значение фона данной ячейки. |
Как минимум потому, что "0" != "00":
<style type="text/css">
.palette td {
width: 1em;
height: 1em;
}
</style>
<script type="text/javascript">
<!--
function _init() {
var pNode = document.createElement("TABLE");
pNode.className = "palette";
for (var r=0; r<=255; r+=51) {
for(var g=0; g<=255; g+=51){
var pTr = document.createElement("TR");
for(var b=0; b<=255; b+=51) {
var pTd = document.createElement("TD"),
color = "#" +
(r ? r.toString(16) : '00') +
(g ? g.toString(16) : '00') +
(b ? b.toString(16) : '00');
pTd.onclick = function(color){
return function(){
draw.color=color
}
}(pTd.style.backgroundColor = color);
pTr.appendChild(pTd);
}
pNode.appendChild(pTr);
}
}
document.body.appendChild(pNode);
}
-->
</script>
<body onload="_init()"></body>
|
Спасибо. Проблему первого кода решили. В голову не пришло))
Однако эксплорер всё равно не показывает эти таблицы. |
| Часовой пояс GMT +3, время: 12:01. |