Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.07.2012, 23:37
Интересующийся
Отправить личное сообщение для Atilla Посмотреть профиль Найти все сообщения от Atilla
 
Регистрация: 28.06.2009
Сообщений: 21

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?
Ответить с цитированием
  #2 (permalink)  
Старый 25.07.2012, 03:36
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,577

Потому что и не должно быть. Только для осла.
Используйте insertBefore().
__________________
29375, 35

Последний раз редактировалось Aetae, 25.07.2012 в 03:39.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тег object - как получить его document neon121 Events/DOM/Window 36 11.06.2012 19:57
Object [object Object] has no method 'animate' DonLino jQuery 4 19.09.2011 19:08
Как не перезагружать OBJECT nyols (X)HTML/CSS 5 12.09.2011 10:31
Property 'open' of object [object DOMWindow] is not a function softrix Events/DOM/Window 2 31.01.2011 16:01
object и object HTMLFormElement Paul56 Общие вопросы Javascript 2 17.07.2009 08:29