2015-07-22 1 views
0
  1. Я отправил предыдущий вопрос, и кто-то ответил с этим кодом:

HTML:шестнадцатеричные цвета не работают на целевой стиль BackgroundColor

<table class="bingo"> 
    <tr> 
     <td id="square0"></td> 
     <td id="square1"></td> 
     <td id="square2"></td> 
    </tr> 
    <tr> 
     <td id="square3"></td> 
     <td id="square4"></td> 
     <td id="square5"></td> 

    </tr> 
    <tr> 
     <td id="square6"></td> 
     <td id="square7"></td> 
     <td id="square8"></td> 
    </tr> 
</table> 

JS:

var toggleHighlight = function (e) { 
    var bg = e.target.style.backgroundColor; 
     if (bg == 'red') { 
     e.target.style.backgroundColor = ''; 
     } else { 
     e.target.style.backgroundColor = 'red'; 
     } 
    } 

var prepareTable = function() { 
    var cells = document.getElementsByTagName("td"); 
     for (var i = 0 ; i < cells.length ; i++) { 
     cells[i].onclick = function(event) { 
      toggleHighlight(event); 
      } 
     } 
} 

document.onload = prepareTable(); 

Вышеприведенный код показан здесь: http://jsfiddle.net/nyzswnx2/47/

Однако, когда я изменил красный цвет на #cecece, и мне удалось щелкнуть по каждой ячейке, которая превращает ячейку от белого до светло-серого. Однако, когда я снова нажимаю светло-серая ячейка, она не превратит ячейку от светло-серого до белого. Как это исправить?

http://jsfiddle.net/RE006/nyzswnx2/82/

// e is parameter 
var toggleHighlight = function (e) { 
    var bg = e.target.style.backgroundColor; 
    if (bg == "#cecece") { 
     e.target.style.backgroundColor = "#fff"; 
    } else { 
     e.target.style.backgroundColor = "#cecece"; 
    } 
} 

/* getting a list from "td" will return a list, it is need for a loop to store the cells passes event as argument */ 
var prepareTable = function() { 
    var cells = document.getElementsByTagName("td"); 
    for (var i = 0 ; i < cells.length ; i++) { 
    cells[i].onclick = function(event) { 
     toggleHighlight(event); 
    } 
    } 
} 

//calls the function 
document.onload = prepareTable(); 
+1

Пожалуйста, сделать 'console.log (BG)' отлаживать действительно ли этот цвет возвращается как '# cecece' после установки его – Bergi

+0

цвета хранятся в виде' RGB() 'значения. Либо проверьте значение rgb, конвертируйте его в шестнадцатеричный код перед своим состоянием, либо используйте классы. –

+0

Шестнадцатеричный: когда я нажимаю на белую ячейку, чтобы сделать ее светло-серой, под консолью: я получаю: пустую строку, а ячейка превращается из белого в светло-серый. Я щелкаю по светло-серой клетке, под консолью, получаю: rgb (206, 206, 206), и ячейка остается светло-серой. – user5117220

ответ

0
var bg = e.target.style.backgroundColor; 

BackgroundColor возвращается в RgB и не гекс. Значение bg равно rgb(206, 206, 206), а не #cecece

Вы можете попробовать сравнить строку rgb или преобразовать значение в hex.

if (bg == "rgb(206, 206, 206)") { 
Смежные вопросы