• Страница 1 из 1
  • 1
Уникальный идентификатор элемента
Aleko
Дата: Вторник, 22.09.2009, 04:54 | Сообщение # 1
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Столкнулся с проблемой назначения уникального идентификатора для элемента, для его точного определения и отличия от всех других элементов, во время обработки скриптов.
Поясняю: у нас есть 20 ссылок. Все они ОБСАЛЮТНО одинаковые. Но вот скрипт должен запомнить каждую ссылку уникально и отдельно, причем так, чтобы впоследствии не спутать её с другой ссылкой.
Сейчас я для этого присваиваю в коде скрипта каждому уникальному элементу специальный идетификатор, который собирается примерно так:
Code
elementId = element(сам элемент)+(тут координата левого верхнего угла элемента относительно документа)
. Пока всё работает и вполне прилично, но каждый раз высчитывать координату угла - не айс - это может тормозить работу. Кто подскажет решения? id и классы не предлогать. =)


Бесплатные обои.
  
Aleko
Дата: Вторник, 22.09.2009, 19:57 | Сообщение # 2
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Вот то, что просто выбивает меня из седла! У на есть 2 дива. Смотрите:
Code
<div></div>
<div></div>

<script type="text/javascript">

z = {}; // создаем хэш

z[document.getElementsByTagName('div')[0]] = 5; // включаем в хэш первый див
z[document.getElementsByTagName('div')[1]] = 10; // и второй див

alert(document.getElementsByTagName('div')[1]==document.getElementsByTagName('div')[0]) // первый див НЕ равен второму. Всё верно.

// по идее и значения хэша не будут равны друг другу, так как 5 не равно 10 и дивы не равны - это мы уже проверили. Но:

alert(z[document.getElementsByTagName('div')[1]]==z[document.getElementsByTagName('div')[0]]) // вернет true  

//ПОЧЕМУ!!!????

</script>


Бесплатные обои.
  
Бармалей
Дата: Вторник, 22.09.2009, 22:20 | Сообщение # 3
молчун
Группа: Проверенные
Пользователь №: 110
Сообщений: 22
Code
<div></div>  
<div></div>  

<script type="text/javascript">  

function _ (o){
    var s = [],i;
    for(i in o)
       s.push(i+' ('+typeof i+'): '+o[i]+';');
    return s.join('\n');
}

z = {}; // создаем хэш  

z[document.getElementsByTagName('div')[0]] = 5; // включаем в хэш первый див  
z[document.getElementsByTagName('div')[1]] = 10; // и второй див  

alert(document.getElementsByTagName('div')[1]==document.getElementsByTagName('div')[0]) // первый див НЕ равен второму. Всё верно.  

// по идее и значения хэша не будут равны друг другу, так как 5 не равно 10 и дивы не равны - это мы уже проверили. Но:  

alert(z[document.getElementsByTagName('div')[1]]==z[document.getElementsByTagName('div')[0]]) // вернет true   

//ПОЧЕМУ!!!????  
// Потому что
alert(_(z))

</script>

Индексами объекта / массива могут быть только числа и строки.


Сообщение отредактировал Бармалей - Вторник, 22.09.2009, 22:22
  
Aleko
Дата: Вторник, 22.09.2009, 23:56 | Сообщение # 4
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Бармалей, я уже понял, спасибо) До этой заветной строчки
Quote (Бармалей)
Индексами объекта / массива могут быть только числа и строки.
пришлось додумываться самому, так как сбивало описание хэшей...


Бесплатные обои.
  
DSC
Дата: Суббота, 16.01.2010, 17:48 | Сообщение # 5
спикер
Группа: Проверенные
Пользователь №: 127
Сообщений: 516
Получено оценок: 41
Aleko, объясни мне, что дают эти квадратные скобки:
Quote (Aleko)
z[document.getElementsByTagName('div')[0]] = 5;


aka Latro
  
SinuS
Дата: Воскресенье, 17.01.2010, 03:48 | Сообщение # 6
говорун
Группа: Модераторы
Пользователь №: 179
Сообщений: 195
Получено оценок: 15
DSC, в них заключаются элементы массива, в данном случае строка,а не отдельный объект.

Talk is cheap.
  
  • Страница 1 из 1
  • 1
Поиск:
© Studioad.ru 2006 · 2010. Использование материалов форума на сторонних ресурсах без прямой обратной ссылки строго запрещено. Хостинг от uCoz.