Помогите новичку в js. Нашел вот такой код для использования стрелок клавиатуры для перемещения по таблице HTML. Только проблема в том, что начальная ячейка для перемещения начинается всегда с одной и той же. А нужно чтоб начиналось с той, которую кликнул. Код (Javascript): var start = document.getElementById('start'); start.focus(); start.style.backgroundColor = 'green'; start.style.color = 'white'; function dotheneedful(sibling) { if (sibling != null) { start.focus(); start.style.backgroundColor = ''; start.style.color = ''; sibling.focus(); sibling.style.backgroundColor = 'green'; sibling.style.color = 'white'; start = sibling; } } document.onkeydown = checkKey; function checkKey(e) { e = e || window.event; if (e.keyCode == '38') { // up arrow var idx = start.cellIndex; var nextrow = start.parentElement.previousElementSibling; if (nextrow != null) { var sibling = nextrow.cells[idx]; dotheneedful(sibling); } } else if (e.keyCode == '40') { // down arrow var idx = start.cellIndex; var nextrow = start.parentElement.nextElementSibling; if (nextrow != null) { var sibling = nextrow.cells[idx]; dotheneedful(sibling); } } else if (e.keyCode == '37') { // left arrow var sibling = start.previousElementSibling; dotheneedful(sibling); } else if (e.keyCode == '39') { // right arrow var sibling = start.nextElementSibling; dotheneedful(sibling); } } Код (CSS): table { border-collapse: collapse; border: 1px solid black; } table td { border: 1px solid black; padding: 10px; text-align: center; } HTML: <table> <tbody> <tr> <td id='start'>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> <tr> <td>13</td> <td>14</td> <td>15</td> <td>16</td> </tr> </tbody> </table>
за меня не прошу делать. подскажите что сделать. я понимаю что когда указываю для <td> id="start", то с этой ячейки и начинается перемещение. А вот не могу понять как сделать чтоб начиналось с места, куда кликнул. Помогите пожалуйста.
@ara05ru вот я вам подсказал, вам это что то дало? Код (Javascript): var td = document.querySelectorAll('td'); if(td.length !== 0) { [].forEach.call(td, function(item) { console.log(item); } ); }
@ara05ru держите, серавну ничему не научитесь Код (Javascript): <table> <tbody> <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> <tr> <td>13</td> <td>14</td> <td>15</td> <td>16</td> </tr> </tbody> </table> <script> var td = document.querySelectorAll('td'); if(td.length !== 0) { var start = td[0]; [].forEach.call(td, function(item) { item.addEventListener( 'click', function() { start.style.backgroundColor = ''; start.style.color = ''; start = this; start.focus(); start.style.backgroundColor = 'green'; start.style.color = 'white'; } ); }); } document.addEventListener('keydown', function(e) { e = e || window.event; if (e.keyCode == '38') { // up arrow var idx = start.cellIndex; var nextrow = start.parentElement.previousElementSibling; if (nextrow != null) { var sibling = nextrow.cells[idx]; dotheneedful(sibling); } } else if (e.keyCode == '40') { // down arrow var idx = start.cellIndex; var nextrow = start.parentElement.nextElementSibling; if (nextrow != null) { var sibling = nextrow.cells[idx]; dotheneedful(sibling); } } else if (e.keyCode == '37') { // left arrow var sibling = start.previousElementSibling; dotheneedful(sibling); } else if (e.keyCode == '39') { // right arrow var sibling = start.nextElementSibling; dotheneedful(sibling); } } ); function dotheneedful(sibling) { if (sibling != null) { start.focus(); start.style.backgroundColor = ''; start.style.color = ''; sibling.focus(); sibling.style.backgroundColor = 'green'; sibling.style.color = 'white'; start = sibling; } } </script>
ну хотя бы я понял что это реализуемо. дальше буду искать. спасибо --- Добавлено --- --- Добавлено --- спасибо огромное. я знал что в душе вы добрый человек ).
@ara05ru ну вам то пользы никакой, вы ничему не научились, скопировали чужой код. Что либо сделать вы с ним не сможете. Учить мне вас чему то желания нет, поэтому и показал готовый код =)
Замените вот тут все одной строчкой, поймете как, считайте что поняли как работает Код (Javascript): item.addEventListener( 'click', function() { // тут нужна одна строка /*start.style.backgroundColor = ''; start.style.color = ''; start = this; start.focus(); start.style.backgroundColor = 'green'; start.style.color = 'white';*/ } );