Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.06.2017, 21:34
Новичок на форуме
Отправить личное сообщение для tupoimudak2 Посмотреть профиль Найти все сообщения от tupoimudak2
 
Регистрация: 16.06.2017
Сообщений: 3

Как реализовать скрытие определённых элементов при клике на один из них
Есть группа элементов(кнопок), при клике на один из них, должны скрываться все остальные, кроме того на который кликнули.
Хотел реализовать так: есть массив со всеми нужными элементами.При клике на один из них с помощью OnClick="Function`s_name(Button`s name)" вызывается функция которая из массива убирает элемент, имя которого указанно в аргументе. После чего скрывает все элементы,которые остались в массиве.
Но, так как в JS я новичок, код, написанный мной успешно не работает, в консоле ошибок нет.
Сам код:
Кнопки на HTML
<button class="circle p" OnClick="hiding(p);">Predators</button>
	 <button class="circle s" OnClick="hiding(s);">Shrubs</button>
	 <button class="circle d" OnClick="hiding(d);">Donate</button>
	 <button class="circle t" OnClick="hiding(t);">Trees</button>
	 <button class="circle h" OnClick="hiding(h);">Hebivores</button>
	 <button class="circle v" OnClick="hiding(v);">Vacancies</button>
	 <button class="circle f" OnClick="hiding(f);">Flowers</button>
	 <button class="circle w" OnClick="hiding(w);">Workers</button>
	 <button class="circle i" OnClick="hiding(i);">Info</button>

var all = ['#p','#s','#d','#t','#h','#v','#f','#w','#i'];//массив с id элементов
var deletethis;//то,что нужно удалить
function hiding(hidethis) {
	var hidethat = "#"+ hidethis; // добавляем # к тому, что получили в виде аргумента
	var deletethis = arr.indexOf(hidethat); // вычисляем номер нужного элемента в массиве
	arr.splice(deletethis,deletethis); // удаляем его
	$(all).hide(); // скрываем все, что осталось
}
Ответить с цитированием
  #2 (permalink)  
Старый 16.06.2017, 21:54
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

если с jquery то так я бы так сделал
<head>
	<meta charset="utf-8">
</head>
<body>
	<button class="circle p">Predators</button>
	<button class="circle s">Shrubs</button>
	<button class="circle d">Donate</button>
	<button class="circle t">Trees</button>
	<button class="circle h">Hebivores</button>
	<button class="circle v">Vacancies</button>
	<button class="circle f">Flowers</button>
	<button class="circle w">Workers</button>
	<button class="circle i">Info</button>
	<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
	<script>
$(".circle").click(function(){
$(this).siblings(".circle").hide();
});
</script>
</body>

Последний раз редактировалось j0hnik, 16.06.2017 в 22:02.
Ответить с цитированием
  #3 (permalink)  
Старый 16.06.2017, 21:59
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

tupoimudak2,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
    $(function() {
    var b = $(".circle");
  b.on("click",function() {
   b.not(this).hide()
})
});
  </script>
</head>

<body>
     <button class="circle p" >Predators</button>
	 <button class="circle s" >Shrubs</button>
	 <button class="circle d" >Donate</button>
	 <button class="circle t" >Trees</button>
	 <button class="circle h" >Hebivores</button>
	 <button class="circle v" >Vacancies</button>
	 <button class="circle f" >Flowers</button>
	 <button class="circle w" >Workers</button>
	 <button class="circle i" >Info</button>
</body>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 16.06.2017, 22:17
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Рони, друг мой, а почему вы все время этот "1.12.4" jquery подключаете ?
Ответить с цитированием
  #5 (permalink)  
Старый 16.06.2017, 22:26
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

на всякий случай на Vanilla.js

<head>
	<meta charset="utf-8">
</head>
<body>
	<button class="circle p">Predators</button>
	<button class="circle s">Shrubs</button>
	<button class="circle d">Donate</button>
	<button class="circle t">Trees</button>
	<button class="circle h">Hebivores</button>
	<button class="circle v">Vacancies</button>
	<button class="circle f">Flowers</button>
	<button class="circle w">Workers</button>
	<button class="circle i">Info</button>
	<script>
		[].forEach.call(document.querySelectorAll(".circle"), function(el){
			el.addEventListener("click", function(e) {
				[].forEach.call(el.parentNode.children, function(child){ 
					if (child !== el) child.style.display ="none"; 
				});
			});
		});
	</script>
</body>
Ответить с цитированием
  #6 (permalink)  
Старый 16.06.2017, 22:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от j0hnik
почему вы все время этот "1.12.4" jquery подключаете ?
1.потому что шаблон 2.потому что работает в ie и плагинах.
Ответить с цитированием
  #7 (permalink)  
Старый 16.06.2017, 22:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109


<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .hide .circle{
    display: none;
  }
  .hide .show{
    display:  inline-block;
  }
  </style>
  <script src="https://cdn.polyfill.io/v1/polyfill.js?Element.prototype.closest"></script>
  <script>
  window.addEventListener("DOMContentLoaded", function() {
    var body = document.querySelector("body");
    body.addEventListener("click", function(event) {
        var target = event.target;
        if (target.closest(".circle")) {
            body.classList.add("hide");
            target.classList.add("show")
        }
    })
 });
  </script>
</head>

<body>
     <button class="circle p" >Predators</button>
	 <button class="circle s" >Shrubs</button>
	 <button class="circle d" >Donate</button>
	 <button class="circle t" >Trees</button>
	 <button class="circle h" >Hebivores</button>
	 <button class="circle v" >Vacancies</button>
	 <button class="circle f" >Flowers</button>
	 <button class="circle w" >Workers</button>
	 <button class="circle i" >Info</button>
</body>
</html>
Ответить с цитированием
  #8 (permalink)  
Старый 16.06.2017, 23:10
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Рони
<script src="https://cdn.polyfill.io/v1/polyfill.js?Element.prototype.closest"></script>

<script src="vanilla.js"></script>

нафик ие8
Ответить с цитированием
  #9 (permalink)  
Старый 16.06.2017, 23:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от j0hnik
нафик ие8
все ie не поддерживают closest, только Edge с апреля этого года.
http://caniuse.com/#search=closest
Ответить с цитированием
  #10 (permalink)  
Старый 16.06.2017, 23:51
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Сообщение от рони Посмотреть сообщение
все ie не поддерживают closest, только Edge с апреля этого года.
http://caniuse.com/#search=closest
тогда пусть будет
вообще ei нужный браузер.
ему есть отличное применение скачать через него хром когда винда чистая
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как скрыть меню при клике Giorgi jQuery 2 04.12.2015 19:45
Как при изменении div class выполнять анимацию у дочерних элементов? Aleksanderj Элементы интерфейса 6 10.09.2015 18:49
как при клике на <li> поставить значение в <select>? ViRuSreloaded Элементы интерфейса 25 19.10.2014 21:12
Как подменять ФАЙЛ CSS при клике нассылку!!!! СРОЧНО ПОМОГИТЕ. pavdin Общие вопросы Javascript 4 02.12.2010 20:44
Как отменить прокрутку при клике Alekson jQuery 1 30.03.2009 20:53