私はクラス.paletteSq
のすべての要素を持っていて、それぞれ異なる背景色を使用しています。backgroundColorを取得し、ループした要素で表示
私は、一つ一つを通過し、スパンの中に、背景色値、進コードを表示するには、ループを使用しています:
var i, len;
var tiles = document.querySelectorAll(".paletteSq");
function displayColor(){
for(i = 0, len = tiles.length; i < len; i++){
function rgbToHex(color)
{
if(color.charAt(0)=='r')
{
color=color.replace('rgb(','').replace(')','').split(',');
var r=parseInt(color[0], 10).toString(16);
var g=parseInt(color[1], 10).toString(16);
var b=parseInt(color[2], 10).toString(16);
r=r.length==1?'0'+r:r; g=g.length==1?'0'+g:g; b=b.length==1?'0'+b:b;
var colHex='#'+r+g+b;
return colHex;
}
}
var color = tiles[i].style.backgroundColor;
tiles[i].innerHTML = '<span class="hex">' +rgbToHex(color)+ '</span>';
}
}
displayColor(tiles);
それはしかし働いていません。コンソールエラーはありません。私は唯一のundefined
は、各要素の横のスパンに16進数のカラーコードの代わりに表示されます。
誰かが間違っているのを見ることができますか?
function displayColor(tiles){} //関数を呼び出すときにパラメータを渡すので、すでにグローバル変数として宣言しています。 – jhek
色がrgbでない場合は、終了してから未定義になります(if color.charAt .. == "r")。 – MartinWebb
@jhekああはい。私は 'displayColor()'の中で 'tiles'を削除しましたが、未だ定義されていません。 – dmoz