Object #<HTMLTableRowElement> has no method 'swapNode'
Скрипт должен менять местами строки (<tr>) таблицы методом drag-and-drop.
javascript: var mouseStatus=false var navigation var number var elementForReplace window.onload = function () { navigation = document.getElementsByClassName("navigation")[0].getElementsByTagName("tbody")[0] number = parseInt ( navigation.lastChild.getElementsByTagName("td")[0].innerHTML ) + 1 for ( i = 1; i < number; i++ ) { navigation.getElementsByTagName("tr")[i].getElementsByTagName("td")[0].addEventListener('mousedown', mouseDown, false) navigation.getElementsByTagName("tr")[i].getElementsByTagName("td")[0].addEventListener('mousemove', move, false) navigation.getElementsByTagName("tr")[i].getElementsByTagName("td")[0].addEventListener('mouseup', mouseUp, false) } } /***** Перетаскивание пунктов меню *****/ function mouseDown (event) { mouseStatus = true elementForReplace = event.currentTarget.parentNode event.preventDefault() } function move (event) { if (mouseStatus & event.currentTarget.parentNode!=elementForReplace) { event.currentTarget.parentNode.swapNode (elementForReplace) } event.preventDefault() } function mouseUp (event) { mouseStatus = false } HTML: <table class="navigation"> <tbody> <tr> <th>..</th> <th>..</th> <th>..</th> </tr> <tr> <td>...</td> <!-- Ячейка, которая следит за mousedown, mousemove и mouseup--> <td>...</td> <td>...</td> </tr> <tr> <td>...</td> <!-- Ячейка, которая следит за mousedown, mousemove и mouseup--> <td>...</td> <td>...</td> </tr> ... </tbody> </table> Захват событий происходит только в первой ячейке каждой строки. Ошибку выдаёт на event.currentTarget.parentNode.swapNode (elementForReplace) внутри функции move () Этот кусок кода должн менять местами строку, по которой mousedown (elementForReplace), со строкой, на которую mousemove (event.currentTarget.parentNode). Собственно говоря мне не понятна ошибка. Почему у <tr> нет метода swapNode? |
Потому что и не должно быть. Только для осла.
Используйте insertBefore(). |
Часовой пояс GMT +3, время: 03:30. |