Перейти к содержимому

Сервис обмена электронных валют


Скрипт работает только на одном блоке

#1 hoax

hoax
  • Пользователь
  • 24 сообщений
  • Репутация: 1
0

Отправлено 21 Сентябрь 2012 - 21:41

Всем привет, вот есть скрипт

var a = document.getElementById('anny');
var s = document.getElementById('show_block);
a.onclick = function() {
show(s);
}
function show(el) {
el.style.display=el.style.display=='block'? 'none' : 'block'
}


Т.е. у меня на странице есть несколько таких id - a,s. Но работает скрипт только в первом блоке (в котором есть ПЕРВИЧНЫЕ a, s), остальные идентичные ему (тоже блоки с теми же a,s) не пашут, почему?

 

 

  • 0

#2 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 21 Сентябрь 2012 - 22:39

ID уникализирует элемент страницы. Проще говоря, ID должен встречаться на странице только 1 раз, т.е. не может быть на странице больше одного элемента с идентификатором a - в таком случае будет работать только первый идентификатор.
  • 0


#3 hoax

hoax
    Topic Starter
  • Пользователь
  • 24 сообщений
  • Репутация: 1

Отправлено 22 Сентябрь 2012 - 18:42


var announcement = document.getElementsByClassName('announcement');
var showAnnounce = document.getElementsByClassName('show_announcement');

в html заменил на div class=""

в стилях тоже, что-то не пашет

  • 0

#4 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 22 Сентябрь 2012 - 19:07

hoax,
* getElementsByClassName не работает в ИЕ
* а там, где работает, возвращает массив элементов с заданным классом.
Поэтому, если хочется, чтобы ваша функция показывала/скрывала то что надо, либо дальше модернизируйте ее либо пользуйтесь чем-то вроде такого:
<html>
<head>
<title>Show/Hide</title>
<script type="text/javascript">
function show_hide (id) {
if (document.getElementById("hidden_" + id).style.display == "none") {
	document.getElementById("hidden_" + id).style.display = "block";
	document.getElementById("lnk_" + id).innerHTML = "Скрыть";
}
else {
	document.getElementById("hidden_" + id).style.display = "none";
	document.getElementById("lnk_" + id).innerHTML = "Показать";
}
}
</script>
</head>
<body>

<a href="javascript:show_hide('1');" id="lnk_1">Показать</a>
<div id="hidden_1" style="display:none">
Скрытый текст
Скрытый текст
Скрытый текст
</div>
<br>
<a href="javascript:show_hide('2');" id="lnk_2">Показать</a>
<div id="hidden_2" style="display:none">
Скрытый текст
Скрытый текст
Скрытый текст
Скрытый текст
Скрытый текст
Скрытый текст
</div>
</body>
</html>

  • 0

#5 hoax

hoax
    Topic Starter
  • Пользователь
  • 24 сообщений
  • Репутация: 1

Отправлено 22 Сентябрь 2012 - 20:24

Вот по типо этого, помогите додумать)

есть несколько блоков a1,a2,a3,a4,a5... нужно чтобы при нажатии на них вызывался блок h_a1

сделал следующее


Надо как-то сделать, чтобы x был больше нуля, т.е. было так id="a1, a2, a3....." == id="ax" Т.е. чтобы х был как бы дополнением к id.






function ann() {


var x;

var block = document.getElementById('ann');
var a = block.getElementById('a' + x);
var h_a = document.getElementById('h_a1');

x = x>0;

if(a) show(h_a);


function show(el) {

el.onclick = function() {

this.style.display=this.style.display? '':'block';

}


}
}


  • 0

#6 hoax

hoax
    Topic Starter
  • Пользователь
  • 24 сообщений
  • Репутация: 1

Отправлено 22 Сентябрь 2012 - 21:29

наверно непонятно написал) имею ввиду чтобы x был числом, которые прибавляется к id, т.е. id="a1", id="a2" и т.д. было идентично id== ax (где х - любое число)
  • 0

#7 hoax

hoax
    Topic Starter
  • Пользователь
  • 24 сообщений
  • Репутация: 1

Отправлено 22 Сентябрь 2012 - 21:52

хотя наверное так оставлю не могу додумать, Ваш код немного сократил, спасибо

function ann(x) {


var h = document.getElementById('h_a' + x);
h.style.display=h.style.display? '' : 'block';
}

  • 0


Оформление форума – IPBSkins.ru