Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.11.2008, 13:30
Новичок на форуме
Отправить личное сообщение для Forsaken Посмотреть профиль Найти все сообщения от Forsaken
 
Регистрация: 29.11.2008
Сообщений: 8

Обмен содержимым между ячейками таблицы.
Суть задачи такова:
Есть таблица, в которой есть данные. Нужно поменять местами содержимое между ячейками. К примеру [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 расписан доступ к атрибутам из скрипта. Буду ну очень благодарен.
Ответить с цитированием
  #2 (permalink)  
Старый 29.11.2008, 13:53
Аватар для Snipe
Профессор
Отправить личное сообщение для Snipe Посмотреть профиль Найти все сообщения от Snipe
 
Регистрация: 06.05.2008
Сообщений: 765

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

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

Последний раз редактировалось Snipe, 29.11.2008 в 13:55.
Ответить с цитированием
  #3 (permalink)  
Старый 29.11.2008, 14:21
Новичок на форуме
Отправить личное сообщение для Forsaken Посмотреть профиль Найти все сообщения от Forsaken
 
Регистрация: 29.11.2008
Сообщений: 8

За ссылочку спасибо. Хотя не то, что я просил, но все равно нашел много нужного. Мне нужно понять синтаксис команд как к примеру в делфи: 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'

Последний раз редактировалось Forsaken, 29.11.2008 в 14:47.
Ответить с цитированием
  #4 (permalink)  
Старый 30.11.2008, 19:40
Аватар для Snipe
Профессор
Отправить личное сообщение для Snipe Посмотреть профиль Найти все сообщения от Snipe
 
Регистрация: 06.05.2008
Сообщений: 765

у вас все-таки innerText или innerHTML?
innerText - не кроссбраузерная штука.
Ответить с цитированием
  #5 (permalink)  
Старый 30.11.2008, 22:30
Новичок на форуме
Отправить личное сообщение для Forsaken Посмотреть профиль Найти все сообщения от Forsaken
 
Регистрация: 29.11.2008
Сообщений: 8

Да ни так, ни так не пашет. Это уже после экспериментов результат. Счас я скрипт закомментировал, но выхода из ситуации не вижу, ибо все сумасшедшие идеи я уже опробывал...
Сейчас же код выглядит так:
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;
	}

Последний раз редактировалось Forsaken, 30.11.2008 в 22:33.
Ответить с цитированием
  #6 (permalink)  
Старый 30.11.2008, 22:48
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

item вроде только в Gecko браузерах работает. Вообще почитайте статью, какую нибудь, о работе с таблицами в JavaScript, например, вот хорошо написано: «DOM: Работаем со строками и ячейками таблицы».
Ответить с цитированием
  #7 (permalink)  
Старый 30.11.2008, 22:50
Новичок на форуме
Отправить личное сообщение для Forsaken Посмотреть профиль Найти все сообщения от Forsaken
 
Регистрация: 29.11.2008
Сообщений: 8

Вообщем, 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 минут бы раньше=)

Последний раз редактировалось Forsaken, 30.11.2008 в 22:52.
Ответить с цитированием
  #8 (permalink)  
Старый 01.12.2008, 12:23
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Forsaken
Нужно было создать временную ячейку с строке и туда уже забрасывать временные данные.
Я, наверно, вас сильно удивлю, но временные данные можно забрасывать во временную переменную.
Ответить с цитированием
  #9 (permalink)  
Старый 02.12.2008, 20:23
Новичок на форуме
Отправить личное сообщение для Forsaken Посмотреть профиль Найти все сообщения от Forsaken
 
Регистрация: 29.11.2008
Сообщений: 8

Сообщение от Kolyaj Посмотреть сообщение
Я, наверно, вас сильно удивлю, но временные данные можно забрасывать во временную переменную.
Временная переменная не заполнялась по неизвестной причине. Обратите внимание на ошибку которую перехватила и отрепортила Опера.
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое изменение границ между столбцами таблицы srgg Элементы интерфейса 3 10.08.2008 14:40