Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 20.12.2011, 14:51
Интересующийся
Отправить личное сообщение для -=1100=- Посмотреть профиль Найти все сообщения от -=1100=-
 
Регистрация: 07.09.2009
Сообщений: 26

как мне узнать позицию элемента li (на какой из 5 элементов я нажал)
Ответить с цитированием
  #12 (permalink)  
Старый 20.12.2011, 14:52
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

nerv_, таки ты так же не решил задачку автора... Ты не вывел порядковый номер элемента в списке. Вот смотри, я немного поменял содержимое

<html>
    <head>
        <meta charset="utf-8">
        <style type="text/css">
            body { margin:0px; }
        </style>
        <script type="text/javascript">
			function l(event) {
				var el = event.target || event.srcElement;
				alert(el.innerHTML);
            }
        </script>
    </head>
    <body>
		<ul onclick="l(event)">
		 <li>select *</li>
		 <li>select *</li>
		 <li>select *</li>
		 <li>select *</li>
		 <li>select *</li>
		</ul>
    </body>
</html>

И уже не понятно что ты там нашел...
Ответить с цитированием
  #13 (permalink)  
Старый 20.12.2011, 14:54
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от -=1100=-
как мне узнать позицию элемента li (на какой из 5 элементов я нажал)
К тебе в функцию клика приходит ссылка на элемент (this)... Остаётся только сравнить твой это элемент или нет.
Если твой - вывести значение итерационной переменной и закончить таки цыкл.
Ответить с цитированием
  #14 (permalink)  
Старый 20.12.2011, 14:55
Интересующийся
Отправить личное сообщение для -=1100=- Посмотреть профиль Найти все сообщения от -=1100=-
 
Регистрация: 07.09.2009
Сообщений: 26

if (ul.getElementsByTagName('li')[xx]==this.???){...}

Я хотя бы в правильную сторону мыслю?
Ответить с цитированием
  #15 (permalink)  
Старый 20.12.2011, 14:56
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

nerv_ молодец уже в том, что делает полные тестовые примеры, ане как -=1100=- какие-то огрызки...
Ответить с цитированием
  #16 (permalink)  
Старый 20.12.2011, 14:57
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от -=1100=-
Я хотя бы в правильную сторону мыслю?
Сторона правильная.
А вот синтаксис хромает на все четыре копыта... И над оптимизацией нужно работать...
Ответить с цитированием
  #17 (permalink)  
Старый 20.12.2011, 15:01
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от -=1100=-
Я хотя бы в правильную сторону мыслю?
В какую сторону мыслить, Вам уже давно сказали
Сообщение от -=1100=-
Как узнать где остановиться? (в какой ты кубик пальцем ткнул)
Сообщение от ksa
Таки сравнивать каждый кубик с "моим". В JS есть this...
ksa, да) Тот вариант приемлем только в рамках обозначенного ТС контекста.
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #18 (permalink)  
Старый 20.12.2011, 16:00
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

у меня получилось так
<html>
    <head>
        <meta charset="utf-8">
        <style type="text/css">
            body { margin:0px; }
        </style>
        <script type="text/javascript">
            function l(event) {
                var elLi = event.target || event.srcElement;
                var elUl = elLi.parentNode.childNodes;

                for(var j = 0, i = 0; j < elUl.length; j++) {
                    if(elUl.item(j).nodeName === "LI") {
                        i++;
                        if(elUl.item(j) === elLi) break;
                    }
                }
                alert(i);
            }
        </script>
    </head>
    <body>
        <ul onclick="l(event)">
         <li>select *</li>
         <li>select *</li>
         <li>select *</li>
         <li>select *</li>
         <li>select *</li>
        </ul>
    </body>
</html>
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #19 (permalink)  
Старый 20.12.2011, 16:15
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от nerv_
у меня получилось так
По-мне так немного замудрёно ты сделал... Как вариант:

<!DOCTYPE html>
<html>
<head>
<!--
<script src="http://code.jquery.com/jquery-latest.js"></script>
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
function l(Obj,event) {
	var elLi = event.target || event.srcElement;
	var o = Obj.getElementsByTagName('li');
	for (var j = 0; j < o.length; j++) {
		if(o[j] === elLi) {
			alert(j+1);
			break;
		}
	}
}
</script>
</head>
<body>
<ul onclick="l(this,event)">
	<li>select *</li>
	<li>select *</li>
	<li>select *</li>
	<li>select *</li>
	<li>select *</li>
</ul>
</body>
</html>
Ответить с цитированием
  #20 (permalink)  
Старый 20.12.2011, 16:49
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

ksa, спасибо! Понял, где можно было упростить. Почему-то эта запись
var elUl = elLi.parentNode.childNodes;

в FF помимо Li влючала еще элементы (всего 11 для списка из 5).
Сделал по Вашему примеру.
<html>
    <head>
        <meta charset="utf-8">
        <style type="text/css">
            body { margin:0px; }
        </style>
        <script type="text/javascript">
            function l(event) {
                var x = event.target || event.srcElement;
                var j = x.parentNode.getElementsByTagName('li');
                for(var i = 0; i < j.length; i++) {
                    if(j[i] === x) break;
                }
                alert(++i);
            }
        </script>
    </head>
    <body>
        <ul onclick="l(event)">
         <li>select *</li>
         <li>select *</li>
         <li>select *</li>
         <li>select *</li>
         <li>select *</li>
        </ul>
    </body>
</html>
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по jquery - как узнать какой тэг? APL Общие вопросы Javascript 7 09.06.2016 15:22
Как менять позицию элемента? Заданую через position:absolute; left:100px; top:200px; aRpi Общие вопросы Javascript 3 24.04.2011 08:42
как от элемента отвязать функцию syegorius jQuery 1 10.04.2011 22:05
Как узнать индекс элемента над которым находится курсор Zhazhah jQuery 2 28.03.2011 23:30
Как узнать значение свойства СSS у элемента? Antt Общие вопросы Javascript 3 16.09.2009 17:39