Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Еще вопрос от новичка... (https://javascript.ru/forum/dom-window/17253-eshhe-vopros-ot-novichka.html)

Viral 12.05.2011 12:09

Еще вопрос от новичка...
 
Есть хтмл-код(структуру показать):

<div id="q" onclick="func('w1')">Тык</div>
    <div id="w1">
      <div id="e1">
        <div id="r1"></div>
      </div>
    </div>
    <div id="w2">
      <div id="e2">
        <div id="r2"></div>
      </div>
    </div>
    <div id="w3">
      <div id="e3">
        <div id="r3"></div>
      </div>
    </div>
    <div id="w4">
      <div id="e4">
        <div id="r4"></div>
      </div>
    </div>




Количество дивов определяется количеством записей в базе (выводится все языком GishopML, если кто-то слышал о таком)
id этих дивов тоже выводится из базы в соответствии с номером записи.(сейчас их порядка 150)

Подскажите, пожалуйста, как правильно оформить скрипт, чтобы функция срабатывала на все <div> с id="wN", кроме дива с id=w1

Спасибо за внимание.:thanks:

ksa 12.05.2011 12:46

Цитата:

Сообщение от Viral
как правильно оформить скрипт, чтобы функция срабатывала на все <div> с id="wN", кроме дива с id=w1

Как вариант...

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251">
<style type="text/css">
</style>
<script>
function Go() {
	var i=2
	while (document.getElementById('w'+i)) {
		alert(i)
		i++
	}
}
</script>
</head>
<body>
<div id="q" onclick='Go()'>Тык</div>
<div id="w1">
  <div id="e1">
	<div id="r1"></div>
  </div>
</div>
<div id="w2">
  <div id="e2">
	<div id="r2"></div>
  </div>
</div>
<div id="w3">
  <div id="e3">
	<div id="r3"></div>
  </div>
</div>
<div id="w4">
  <div id="e4">
	<div id="r4"></div>
  </div>
</div>
</body>
</html>

Viral 12.05.2011 13:08

Спасибо, но это не совсем то...

Если надо такое же действие провернуть с div id="w2", т.е. чтобы на все div с id="wN" (включая первый) кроме него сработала функция, как поступить?

Лучшим, на мой взгляд, было бы представление в javascript функции параметра SQL " like 'w%' ".
Возможно такое реализовать? как?

ksa 12.05.2011 13:44

Цитата:

Сообщение от Viral
Если надо такое же действие провернуть с div id="w2", т.е. чтобы на все div с id="wN" (включая первый) кроме него сработала функция, как поступить?

Т.е. тебе нужно исключать только один эелемент?
Тогда так..

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251">
<style type="text/css">
</style>
<script>
function Go(N) {
	var i=1
	while (document.getElementById('w'+i)) {
		if (i==N) {
			i++
			continue
		}
		alert(i)
		i++
	}
}
</script>
</head>
<body>
<div id="q" onclick='Go(3)'>Тык</div>
<div id="w1">
  <div id="e1">
	<div id="r1"></div>
  </div>
</div>
<div id="w2">
  <div id="e2">
	<div id="r2"></div>
  </div>
</div>
<div id="w3">
  <div id="e3">
	<div id="r3"></div>
  </div>
</div>
<div id="w4">
  <div id="e4">
	<div id="r4"></div>
  </div>
</div>
</body>
</html>

Цитата:

Сообщение от Viral
Лучшим, на мой взгляд, было бы представление в javascript функции параметра SQL " like 'w%' ".

В контексте твоей задачи я бы так не делал...

Viral 12.05.2011 16:11

Спасибо Вам большое за помощь.
У меня еще вопрос по этой же теме.

В случае нарушения нумерации (если какой то из пунктов пропущен, к примеру) на следующем после "пропущенного" и следующих за ним div'ах скрипт перестает работать.

Подскажите, пожалуйста, как поступить в этом случае?

Грубо говоря, в конечном виде, нужна "инверсия", выбрал один пункт - сработали все остальные.

ksa 12.05.2011 16:29

Цитата:

Сообщение от Viral
как поступить в этом случае?

Тут уже нужно говорить об изменении структуры самой хтмл-разметки...

Viral 12.05.2011 16:30

По-подробнее можете, пожалуйста, рассказать?

Что именно надо поменять?

ksa 12.05.2011 16:42

Цитата:

Сообщение от Viral
Что именно надо поменять?

Например засунуть все "структурные" дивы в один материнский... Подумать может тебе и не дивы там нужны... Тогда можно будет пользоваться методом getElementsByTagName...
Т.е. вариантов масса. :)

Можно определить первый и к следующим двигаться специальным методом...

ksa 12.05.2011 16:56

Цитата:

Сообщение от Viral
По-подробнее можете, пожалуйста, рассказать?

Вот один из вариантов...

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251">
<style type="text/css">
</style>
<script>
function Go(N) {
	var i=document.getElementById('container').childNodes[0]
	while (i) {
		if (i.id==('w'+N)) {
			i=i.nextSibling
			continue
		}
		alert(i.id)
		i=i.nextSibling
	}
}
</script>
</head>
<body>
<div id="q" onclick='Go(3)'>Тык</div>
<div id='container'>
	<div id="w1">
	  <div id="e1">
		<div id="r1"></div>
	  </div>
	</div>
	<div id="w3">
	  <div id="e3">
		<div id="r3"></div>
	  </div>
	</div>
	<div id="w4">
	  <div id="e4">
		<div id="r4"></div>
	  </div>
	</div>
</div>
</body>
</html>


Тестил в ИЕ7...

Viral 13.05.2011 09:17

Благодарю! То, что надо! :thanks:


Часовой пояс GMT +3, время: 12:42.