Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Обмен содержимым между ячейками таблицы. (https://javascript.ru/forum/dom-window/2260-obmen-soderzhimym-mezhdu-yachejjkami-tablicy.html)

Forsaken 29.11.2008 13:30

Обмен содержимым между ячейками таблицы.
 
Суть задачи такова:
Есть таблица, в которой есть данные. Нужно поменять местами содержимое между ячейками. К примеру [1,1] и [2,7]. Информация от номерах обмена вводится с 4-х textfield.
Пишу такой код. Пока для начала, чтоб хоть в одной строке менялось.
function StrObmen (Stroka,Stolb1,Stolb2,table){
	var row = table.rows(Stroka); //определяем строку с которой будем работать
	var cell = row.cells(Stolb1); // определем 1-ю ячейку для обмена
	var abcd = cell.innerHTML; // создаем переменную и сохраняем в ней содержимое первой ячейки
	var cell1 = row.cells(Stolb2); // определяем вторую ячейку
	cell.innerHTML = cell1.innerHTML; //присваеваем данные второй ячейки первой
	cell1.innerHTML = abcd; //присваиваем второй ячейке сохраненные данные первой.

И если я понимаю как такое написать в делфе, C++, то тут на убей не пойму че нужно делать...

И еще одна маленькая просьбочка: дайти если кто знает ссылчку на вменяемый справочник, где для каждого тега HTML расписан доступ к атрибутам из скрипта. Буду ну очень благодарен.

Snipe 29.11.2008 13:53

А что конкретно не работает? Результат не тот или что?

я использую http://msdn.microsoft.com/en-us/libr...40(VS.85).aspx
Правда далеко не все совпадает с не IE браузерами. Но по основным моментам одинаково.

Forsaken 29.11.2008 14:21

За ссылочку спасибо. Хотя не то, что я просил, но все равно нашел много нужного. Мне нужно понять синтаксис команд как к примеру в делфи: Form1.StringGrid1.Cells[1,1] - доступ к содержимому напрямую.

В опере страничка просто обновляется. В ИЕ пишет, что ошибка и сразу обновление - не успеваю даже глянуть че за ошибка.
Но синтаксис верен?
Так. Вот че выдала опера, когда сильно попросил:
Цитата:

JavaScript - file://localhost/E:/Програминг/3-й%20курс/HTML/Лаба%204/Laba4.html
Event thread: click
Error:
name: TypeError
message: Statement on line 14: Cannot convert undefined or null to Object
Backtrace:
Line 14 of linked script file://localhost/E:/Програминг/3-й%20курс/HTML/Лаба%204/Jscript.js: In function StrObmen
cell.innerText = cell1.innerText;
Line 1 of function script
StrObmen()
...
stacktrace: n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace'

Snipe 30.11.2008 19:40

у вас все-таки innerText или innerHTML?
innerText - не кроссбраузерная штука.

Forsaken 30.11.2008 22:30

Да ни так, ни так не пашет. Это уже после экспериментов результат. Счас я скрипт закомментировал, но выхода из ситуации не вижу, ибо все сумасшедшие идеи я уже опробывал...
Сейчас же код выглядит так:
function StrObmen (){
	var table = document.getElementById('table2');
	var row = table.rows.item(0);
	var cell = row.cells.item(1);
	var celll = row.cells.item(2);
	var abcd.innerHTML = cell.innerHTML;
	cell.innerHTML = celll.innerHTML;
	celll.innerHTML = abcd.innerHTML;
	}

Octane 30.11.2008 22:48

item вроде только в Gecko браузерах работает. Вообще почитайте статью, какую нибудь, о работе с таблицами в JavaScript, например, вот хорошо написано: «DOM: Работаем со строками и ячейками таблицы».

Forsaken 30.11.2008 22:50

Вообщем, Snipe, огромное спасибо за ту ссылочку. Я как следует просмотрел её и нашел как решить проблему.
function StrObmen (){
	var table = document.getElementById('table2');
	var row = table.rows.item(0);
	var cell = row.cells.item(1);
	var celll = row.cells.item(2);
	celli = row.insertCell(3);
	celli.innerHTML = cell.innerHTML;
	cell.innerHTML = celll.innerHTML;
	celll.innerHTML = celli.innerHTML;
	row.deleteCell(3);
	}

Нужно было создать временную ячейку с строке и туда уже забрасывать временные данные. А поскольку такой объект как ячейка отдельно от документа не существует, то я и как раз в этом моменте и запнулся.
Octane, спасибо. На 5 минут бы раньше=)

Kolyaj 01.12.2008 12:23

Цитата:

Сообщение от Forsaken
Нужно было создать временную ячейку с строке и туда уже забрасывать временные данные.

Я, наверно, вас сильно удивлю, но временные данные можно забрасывать во временную переменную.

Forsaken 02.12.2008 20:23

Цитата:

Сообщение от Kolyaj (Сообщение 9042)
Я, наверно, вас сильно удивлю, но временные данные можно забрасывать во временную переменную.

Временная переменная не заполнялась по неизвестной причине. Обратите внимание на ошибку которую перехватила и отрепортила Опера.


Часовой пояс GMT +3, время: 05:20.