Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как получить значение индекса эл. JavaScript
 
 автор: добряк   (04.01.2013 в 19:30)   письмо автору
 
 

Здравствуйте. В JQvery существует способ получить индекс элемента.
Точно так же можно получть доступ к элементу по извесному индексу.

А как сделать это при помощи JavaScript?

  Ответить  
 
 автор: Deed   (04.01.2013 в 20:36)   письмо автору
 
   для: добряк   (04.01.2013 в 19:30)
 

Fatal Error

  Ответить  
 
 автор: ЯСА   (04.01.2013 в 20:47)   письмо автору
 
   для: добряк   (04.01.2013 в 19:30)
 

в MSIE и Opera:
"достать" тег с известным порядковым номером N -- document.all [N];
узнать порядковый номер текущего тега -- тег.sourceIndex;

в прочих браузерах:
"достать" тег с известным порядковым номером N -- document.getElementsByTagName ('*') [N];
а вот "узнать" номер - это, ИМХО, только через перебор всей коллекции document.getElementsByTagName ('*') циклом до совпадения с текущим тегом

  Ответить  
 
 автор: Deed   (04.01.2013 в 20:49)   письмо автору
 
   для: ЯСА   (04.01.2013 в 20:47)
 

ОЙ!! Это не сюда!! Биг Пардон!!

  Ответить  
 
 автор: добряк   (05.01.2013 в 00:10)   письмо автору
 
   для: ЯСА   (04.01.2013 в 20:47)
 

1. Очень интересно, надо потыкаться.
Но document.all [N], N это номер объекта в коллекции. Вопрос. Номер в колекциии и индекс на странице - это надо считать одно и тоже?

2. document.getElementsByTagName ('*') [N]; - Эту конструкцию я не понял. Я конечно вам доверяю, но я думал, что если круглые скобки - имя тега или номер в коллекции, но не индекс элемента на странице. Вообщем что-то слету тут сспутался . Иожет надо читать так- любой тег с заданным индексом

3. Последнне савсем странно..."циклом до совпадения с текущим тегом" если похожие тэги есть, то узнать невозможно.Странно.
4. Я так понимаю, что все что есть на экране, находиться в памяти и ндексируеется( ячейки памяти) в рамках страницы, экранной памяти. Во всех языках индекс имеет огромное значение для многих программистов. А тут как же, разработчики и не подумали.
5. В JQvery есть функция index(), которая возвращает индекс элемента на странице.
Учитывая предположение (3) она может давать ошибки.
НО я благадарю вас и подумаю 1-2 дня. Если что добавите, буду признателен.

P.S. Кажется что использование индексов может ощутимо сократить размеры текста, что должно было бы соблазнить разработчиков. Почему же это все покрыто каким то туманом и дикой путаницей.

Почему я этим заинтересовался?
1. Номер элемента в коллекции all
2. номер элемента в кокретной коллекции.
3. Индекс элемента на странице.
4. Индекс элемента в DOM.
Это все разные множеества чисел или например 3 и 4 одно и тоже.
Собственно интересней мне сейчас индекы в DOM.
Если есть связь с DOM, то появляются новые способы с новыми путаницами или наоборот

  Ответить  
 
 автор: ЯСА   (05.01.2013 в 02:17)   письмо автору
 
   для: добряк   (05.01.2013 в 00:10)
 

1. в javascript'e и в DOM'e абсолютно вся нумерация начинается с нуля
поэтому "говорим партия, подразумеваем Ленин" "говорим номер, подразумеваем zero-индекс"

2. в жизни (и в javascript'e) просто так доверять никому не надо
потому что любое утверждение легко проверяется
запустите в браузере MSIE или Opera следующий код:
<html><head><title>Example</title><script>
onload = function ()
{
for (var j = 0, coll = document.all, lj = coll.length; j < lj; j++)
alert ('номер (он же индекс) ' + j + ' соответствует тегу ' + coll [j].tagName);
}
</script></head><body>
<input type="button" value="Go!" onclick="alert ('этой кнопке соответствует номер/индекс ' + this.sourceIndex)">
<!-- в OPERA нажатие на кнопку даст undefined -->
</body></html>

а в любых других браузерах аналогичным образом будет работать другой код:
<html><head><title>Example</title><script>
onload = function ()
{
for (var j = 0, coll = document.getElementsByTagName ('*'), lj = coll.length; j < lj; j++)
alert ('номер (он же индекс) ' + j + ' соответствует тегу ' + coll [j].tagName);
}

function getIndex (obj)
{
for (var j = 0, coll = document.getElementsByTagName ('*'), lj = coll.length; j < lj; j++)
if (obj == coll [j])
   {
   alert ('этой кнопке соответствует номер/индекс ' + j);
   return;
   }
}
</script></head><body>
<input type="button" value="Go!" onclick="getIndex (this)">
</body></html>

3. у одного и того же тега в разных DHTML-коллекциях будет свой собственный zero-индекс
например, у тега <input> из предыдущих примеров номер/индекс равен 5
но это его номер в "коллекции всех тегов"
в "коллекции всех тегов <input>" (document.getElementsByTagName ('input')) номер/индекс этого тега будет равен 0

4. абсолютно все DHTML-коллекции формируются (и изменяются) в процессе формирования (и изменения) DOM документа
понятия "индекс элемента на странице" вовсе не существует
есть только понятие "индекс элемента в конкретной DHTML-коллекции"

  Ответить  
 
 автор: добряк   (05.01.2013 в 11:59)   письмо автору
 
   для: ЯСА   (05.01.2013 в 02:17)
 

Тема для меня интересная оказалась, я еще ее прожую чтобы груз из прошлого снять с головы.
Пока я осознал одну мысль: авто переносить этот индекс и коллекции на странице, в коллекцию DOM или JQvery или еще куда - не получится. Можно набрать больше хлопот и лучше наверное всегда именоватьтеги.

2.
В MSDN примерчик взял
 var oElement=event.srcElement;
   var iIndex=oElement.sourceIndex;


Заработало тоько в IE, в Опере не сработала

3. Нокак же сам браузер различает
<div> отличные от других</div>
<div> отличные от других</div>


буду дальше усваивать и делами заниматься

  Ответить  
 
 автор: ЯСА   (05.01.2013 в 17:46)   письмо автору
 
   для: добряк   (05.01.2013 в 11:59)
 

>"Нокак же сам браузер различает"

почитайте http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=88634#post528362

обратите внимание на п. 5: "обращение к любому объекту из DOM происходит по его месту в DOM..."

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования