Как Сделайте так, чтобы в для активированной ячейки нельзя было активировать ее сосед
Как Сделайте так, чтобы в для активированной ячейки нельзя было активировать ее соседей сверху и снизу.
Сделайте так, чтобы в для активированной ячейки нельзя было активировать ее соседей сверху и снизу. <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>focusout</title> </head> <body> <table id='table'> <tr> <td>1</td> <td>2</td> <td>3</td> <td>4</td> </tr> <tr> <td>5</td> <td>6</td> <td>7</td> <td>8</td> </tr> <tr> <td>9</td> <td>10</td> <td>11</td> <td>12</td> </tr> </table> <script> let trs = document.querySelectorAll('tr'); let tds = document.querySelectorAll('td'); for (let i = 0; i < tds.length; i++){ tds[i].addEventListener('click',function func () { tds[i].classList.add('active'); let parent = tds[i].parentElement; let top = parent.previousElementSibling; let down = parent.nextElementSibling; let arrTop = top.children; let arrDown = down.children; console.log (arrTop, arrDown); if (arrTop) { arrTop[i].removeEventListener ('click', func); } if (arrDown) { arrDown[i].removeEventListener ('click', func); } })}; </script> </body> </html> |
javascript888,
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>up and down</title> <style type="text/css"> table{ border-collapse: collapse; } td{ height: 40px; width: 40px; border: 1px solid rgba(0, 0, 128, 1); text-align: center; } .active{ background-color: rgba(255, 0, 255, 1); } </style> </head> <body> <table id='table'> <tr> <td>1</td> <td>2</td> <td>3</td> <td>4</td> </tr> <tr> <td>5</td> <td>6</td> <td>7</td> <td>8</td> </tr> <tr> <td>9</td> <td>10</td> <td>11</td> <td>12</td> </tr> </table> <script> let length = document.querySelectorAll('tr:first-child > td').length; let tds = document.querySelectorAll('td'); let lockdown = []; let current; for (let i = 0; i < tds.length; i++){ let td = tds[i]; let arr = [i - length, i + length] ; td.addEventListener('click',function func () { if(current == td || lockdown.includes(i)) return; if(current) current.classList.remove('active') td.classList.add('active'); lockdown = arr; current = td; })}; </script> </body> </html> |
можно подробней, что эта строчка делает
let length = document.querySelectorAll('tr:first-child > td').length; зачем пуустой масив let lockdown = []; и let arr = [i - length, i + length] ; if(current == td || lockdown.includes(i)) return; |
Dmitry133,
let length - количество колонок в таблице. (легче вычислить что снизу или вверху) lockdown - хранит номер(индексы) ячейки вверху и в низу, от текущей. условно текущая ячейка номер 2 (индекс 1) массив будет хранить [-3, 5] на 6 ячейку нельзя будет нажать(индекс 5), ячейки с индексом -4 не существует. условно текущая ячейка номер 7 (индекс 6) массив будет хранить [2, 10] на 3 ячейку сверху нельзя будет нажать(индекс 2), и также 11 ячейка будет заблокирована (индекс 10) if(current == td || lockdown.includes(i)) return; если нажали на текущую клетку или номер ячейки совпадает с индексом верхней или нижней ячейки ничего не делать более. |
Часовой пояс GMT +3, время: 19:35. |