Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение объекта, а не ссылки, Выделение объекта-строки HTML-таблицы 
:(
    Опции темы
Рассада
Дата 27.6.2005, 11:12 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











ДД!
Хочу во временную переменную сохранить объект - строку таблицы. Но при изменении строк таблицы меняется и переменная :-/. Как поступить?
  Вверх
Sardar
Дата 28.6.2005, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Как понять изменяеться переменная? Строка таблицы это "живой" обьект, в DOM кстати все коллекции и обьекты живые, т.е. любое изменение сразу отражаеться везде.

Сделать клон строки таблицы можно методом cloneNode на ней, но уверен что тебе это не нужно. Скорее всего ты хочешь сохранить текст пары ячеек? Сохрани их где нибудь в массиве. Ещё лучше расскажи подробней, что нужно и дай вёрстку таблицы.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Рассада
Дата 29.6.2005, 11:50 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Я делаю сортировку и мне надо сохранить innerHtml ячеек строки во временную переменную. Через массив делал, думал, может, как еще получится.
  Вверх
Sardar
Дата 29.6.2005, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Рассада innerHTML это просто строка. Скинь код smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Aliance
Дата 29.6.2005, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Тебе нужно понять разницу между сохранением по значению и по ссылке...
PM MAIL WWW ICQ Skype   Вверх
Рассада
Дата 30.6.2005, 09:16 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Sardar, я в курсе, что это строка. Просто способ с сохранением innerHTML пришел несколько позже.

Aliance, разницу я понимаю. Мне и нужно по значению сохранить, вот этого я и добиваюсь!
  Вверх
Aliance
Дата 30.6.2005, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Бывает передача по значению и по ссылке. Для каждолго их методов имеется 3 действия: копирование, передача параметра и сравнивание. Каждое для каждого разное, каждое нужно понимать.

Код

// Копирование по значению
var a = 100;
var b = a;

// Копирование по ссылке
var newYear = new Date(2005, 0, 1);
var noviiGod = newYear;
// Обе переменные ссылаются на один и тот же объект

PM MAIL WWW ICQ Skype   Вверх
Sardar
Дата 1.7.2005, 01:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Рассада, повторяю, тебе это не нужно smile Просто скажи в чём задача, вся задача целиком и скинь свой код.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Рассада
Дата 1.7.2005, 14:40 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Да сортировку в таблице я делаю. Код такой:
Код

  for (i=2; i<table.rows.length; i++)
    {
      temp = table.rows(i);
      j = i-1;
      if (col.lang == 0)
        while (IsFirstLarger(temp.cells(colNumb).innerText, table.rows(j, colNumb).innerText) == false)
        {
          ChangeRows(table.rows(j + 1), table.rows(j));
          j--;
          if (j < 1)
            break;
        }
      else
        while (IsFirstLarger(temp.cells(colNumb).innerText, table.rows(j, colNumb).innerText) == true)
        {
          ChangeRows(table.rows(j + 1), table.rows(j));
          j--;
          if (j < 1)
            break;
        }
     SetRowData(table.rows(j + 1), temp);
    }
function SetRowData(destRow, sourceRow)
{
  for (k=0; k<destRow.cells.length; ++k)
      destRow.cells(k).innerHTML = sourceRow.cells(k).innerHTML;
}
function IsFirstLarger(val1, val2)
{
  var num1 = val1.replace(" ", "").replace(",", ".");
  var num2= val2.replace(" ", "").replace(",", ".");
  if (isNaN(num1) || isNaN(num2))
  {
    num1 = val1;
    num2 = val2;
  }
  else
  {
    num1 = parseFloat(num1);
    num2 = parseFloat(num2);
  }
  return (num1>num2)?true:false;
}
function ChangeRows(row1, row2)
{
  for (k=0; k<row1.cells.length; ++k)
    ChangeData(row1, row2, k);
}

function ChangeData(ob1, ob2, ind)
{
    tmp = ob2.cells(ind).innerHTML;
    ob2.cells(ind).innerHTML = ob1.cells(ind).innerHTML;
    ob1.cells(ind).innerHTML = tmp;
}

На самом деле, идея массива, наверное, правильная. Только вот работает что-то медленно :-(, не знаю, почему.

  Вверх
Sardar
Дата 1.7.2005, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



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

Функции типа: ChangeData и SetRowData, написанне конкретно не правильно smile DOM был создан не для того что бы народ содержимое нод копировал. Глянь на insertBefore у любых элементов (кстати вызывать removeChild после не нужно, знаю что есть такие порывы у тех кто мало работал с W3C DOM) smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Loengreen
Дата 9.5.2008, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 13.7.2007

Репутация: нет
Всего: нет



А всетаки, как получить объект, а не ссылку на него?

Предположим у меня есть функция, которая посылает запросы получает ответ в формате XML. Она выполняется и возвращает данный XML, который записывается в свойство некоего класса. После выполнения функции ссылочка вместе с объектом пропадают, хотя я присваиваю ссылку на объект свойству класса. :(
PM MAIL   Вверх
Ghirik
Дата 9.5.2008, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 919
Регистрация: 26.3.2007

Репутация: 13
Всего: 20



Цитата

DOM был создан не для того что бы народ содержимое нод копировал. 


О-ооо, с этим я согласен! smile (хотелось бы узнать - для чего?)

Рассада, были, здесь, на этом портале образцы сумашедших таблиц, даже создавали их динамически, через домовские методы. При этом - жалуютя на тормоза... Но у Вас, наверное, просто много контента в ячейке/строке.
Или ищите Собаку в циклах.

P.S. Я Ваш код не смотрел, потому, что он не от <html> до </html>.


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0961 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.