Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   Спойлер автоматически должен закрыться по таймеру (https://javascript.ru/forum/css-html-internet-explorer/71623-spojjler-avtomaticheski-dolzhen-zakrytsya-po-tajjmeru.html)

Борис К 01.12.2017 14:42

Спойлер автоматически должен закрыться по таймеру
 
Доброго дня всем хорошим людям))
Задача: сделать спойлер, ограниченный определённым временем открытия по кнопке (клик по кнопке открывает спойлер, а через заданное время спойлер автоматически закрывается).
Пожалуйста, подскажите правильный код для IE!

Nexus 01.12.2017 14:53

А что в ie setTimeout не работает?

Борис К 01.12.2017 15:11

Цитата:

Сообщение от Nexus (Сообщение 471806)
А что в ie setTimeout не работает?

В ie setTimeout работает))
У меня голова пока не работает - только учусь я... если можете, то подскажите!

Nexus 01.12.2017 15:15

Борис К, покажите код, который открывает/закрывает спойлер.

Борис К 01.12.2017 15:29

Цитата:

Сообщение от Nexus (Сообщение 471813)
Борис К, покажите код, который открывает/закрывает спойлер.

Nexus, пожалуйста:
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script> 
$(document).ready(function(){
    $("#flip").click(function(){
        $("#panel").slideDown("slow");
    });
});
</script>
<style> 
#panel {
    padding: 5px;
    text-align: center;
    background-color: #e5eecc;
    border: solid 1px #c3c3c3;
}
#panel {
    padding: 50px;
    display: none;
}
</style>
</head>
<body> 
<button id="flip">Click</button>
<div id="panel">Hello world!</div>
</body>
</html>

Nexus 01.12.2017 15:40

Предполагаю, что код, что вы представили корректно работает под ie.
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script> 
$(document).ready(function(){
	var timer=0;
    $("#flip").click(function(){
		clearTimeout(timer);
        $("#panel").slideDown("slow");
		timer=setTimeout(function(){
			$("#panel").slideUp("slow");
		},2000);
    });
});
</script>
<style> 
#panel {
    padding: 5px;
    text-align: center;
    background-color: #e5eecc;
    border: solid 1px #c3c3c3;
}
#panel {
    padding: 50px;
    display: none;
}
</style>
</head>
<body> 
<button id="flip">Click</button>
<div id="panel">Hello world!</div>
</body>
</html>

Борис К 01.12.2017 15:45

Цитата:

Сообщение от Nexus (Сообщение 471817)
Предполагаю, что код, что вы представили корректно работает под ie.
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script> 
$(document).ready(function(){
	var timer=0;
    $("#flip").click(function(){
		clearTimeout(timer);
        $("#panel").slideDown("slow");
		timer=setTimeout(function(){
			$("#panel").slideUp("slow");
		},2000);
    });
});
</script>
<style> 
#panel {
    padding: 5px;
    text-align: center;
    background-color: #e5eecc;
    border: solid 1px #c3c3c3;
}
#panel {
    padding: 50px;
    display: none;
}
</style>
</head>
<body> 
<button id="flip">Click</button>
<div id="panel">Hello world!</div>
</body>
</html>

Спасибо за подсказку! Проверил - не работает... извините!!!
Поменял на другую библиотеку:
<html>
<head>
<script src="http://code.jquery.com/jquery-1.7.1.js"></script>
<script> 
$(document).ready(function(){
    $("#flip").click(function(){
        $("#panel").slideDown("slow");
    });
});
</script>
<style> 
#panel {
    padding: 5px;
    text-align: center;
    background-color: #e5eecc;
    border: solid 1px #c3c3c3;
}
#panel {
    padding: 50px;
    display: none;
}
</style>
</head>
<body> 
<button id="flip">Click</button>
<div id="panel">Hello world!</div>
</body>
</html>

Спасибо Вам!

Nexus 01.12.2017 16:07

А так?
<html>
<head>
	<title>Untitled</title>
	<style> 
		#panel {
			padding: 5px;
			text-align: center;
			background-color: #e5eecc;
			border: solid 1px #c3c3c3;
		}
		#panel {
			padding: 50px;
			display: none;
		}
	</style>
</head>
<body> 
<button id="flip">Click</button>
<div id="panel">Hello world!</div>
<script type="text/javascript"> 
	var timeout=0;
	addEvent(document.getElementById('flip'),'click',function(){
		var panel=document.getElementById('panel');
		panel.style.display='block';
		
		clearTimeout(timeout);
		timeout=setTimeout(function(){
			panel.style.display='none';
		},2000);
	});
	
	function addEvent(elem,evnt,func){
		if(elem.addEventListener)
			elem.addEventListener(evnt,func,false);
		else if(elem.attachEvent)
			elem.attachEvent("on"+evnt,func);
		else
			elem[evnt]=func;
	}
</script>
</body>
</html>

Борис К 01.12.2017 16:11

Цитата:

Сообщение от Nexus (Сообщение 471826)
А так?
<html>
<head>
	<title>Untitled</title>
	<style> 
		#panel {
			padding: 5px;
			text-align: center;
			background-color: #e5eecc;
			border: solid 1px #c3c3c3;
		}
		#panel {
			padding: 50px;
			display: none;
		}
	</style>
</head>
<body> 
<button id="flip">Click</button>
<div id="panel">Hello world!</div>
<script type="text/javascript"> 
	var timeout=0;
	addEvent(document.getElementById('flip'),'click',function(){
		var panel=document.getElementById('panel');
		panel.style.display='block';
		
		clearTimeout(timeout);
		timeout=setTimeout(function(){
			panel.style.display='none';
		},2000);
	});
	
	function addEvent(elem,evnt,func){
		if(elem.addEventListener)
			elem.addEventListener(evnt,func,false);
		else if(elem.attachEvent)
			elem.attachEvent("on"+evnt,func);
		else
			elem[evnt]=func;
	}
</script>
</body>
</html>

Так в IE отлично работает))
Вот только хотелось бы, чтобы открывшийся блок через какое-то время исчезал (например, через 10 секунд)!

Nexus 01.12.2017 16:27

Борис К, а какая у вас версия ie?
Timeout должен работать.


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