|
|
|
| Здравствуйте. В JQvery существует способ получить индекс элемента.
Точно так же можно получть доступ к элементу по извесному индексу.
А как сделать это при помощи JavaScript? | |
|
|
|
|
|
|
|
для: добряк
(04.01.2013 в 19:30)
| | Fatal Error | |
|
|
|
|
|
|
|
для: добряк
(04.01.2013 в 19:30)
| | в MSIE и Opera:
"достать" тег с известным порядковым номером N -- document.all [N];
узнать порядковый номер текущего тега -- тег.sourceIndex;
в прочих браузерах:
"достать" тег с известным порядковым номером N -- document.getElementsByTagName ('*') [N];
а вот "узнать" номер - это, ИМХО, только через перебор всей коллекции document.getElementsByTagName ('*') циклом до совпадения с текущим тегом | |
|
|
|
|
|
|
|
для: ЯСА
(04.01.2013 в 20:47)
| | ОЙ!! Это не сюда!! Биг Пардон!! | |
|
|
|
|
|
|
|
для: ЯСА
(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 в 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 в 02:17)
| | Тема для меня интересная оказалась, я еще ее прожую чтобы груз из прошлого снять с головы.
Пока я осознал одну мысль: авто переносить этот индекс и коллекции на странице, в коллекцию DOM или JQvery или еще куда - не получится. Можно набрать больше хлопот и лучше наверное всегда именоватьтеги.
2.
В MSDN примерчик взял
var oElement=event.srcElement;
var iIndex=oElement.sourceIndex;
|
Заработало тоько в IE, в Опере не сработала
3. Нокак же сам браузер различает
<div> отличные от других</div>
<div> отличные от других</div>
|
буду дальше усваивать и делами заниматься | |
|
|
|
|
|
|
|
для: добряк
(05.01.2013 в 11:59)
| | >"Нокак же сам браузер различает"
почитайте http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=88634#post528362
обратите внимание на п. 5: "обращение к любому объекту из DOM происходит по его месту в DOM..." | |
|
|
|