Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вместо текста через 25 секунд появляется ссылка (https://javascript.ru/forum/misc/25317-vmesto-teksta-cherez-25-sekund-poyavlyaetsya-ssylka.html)

Изучаю_JS 01.02.2012 16:15

Вместо текста через 25 секунд появляется ссылка
 
Доброго времени суток дорогие форумчане!
Вопрос:
Есть ссылка, и при ее нажатии должен появляться текст, и после 25 секунд текст исчезает и вместо текста появляется ссылка, как можно это сделать ? (готовый вариант) пожалуйста помогите :(

Раед 01.02.2012 16:19

этот процесс "ссылка<-->текст" должен быть постоянным?
или только 1 раз

Изучаю_JS 01.02.2012 16:24

Раед, не понял о чем вы, но объясню так:
Вот ссылка:
<a href="#">view</a>

И при ее нажатии появляется текст, и этот текст будет стоять 25 сек.. и после текст исчезает и вместо текста появляется ссылка, и все больше это ссылка не исчезает, а точнее только один раз, и после обновление страницы все будет заново

Изучаю_JS 01.02.2012 16:39

Раед, извиняюсь, да я вас понял) да только один раз!

Раед 01.02.2012 16:41

function linkToText(element) {
 var text = element.innerHTML;
 var el2 = document.createElement('span');
 el2.innerHTML = text;
 element.parentNode.insertBefore(el2,element);
 element.style.display = 'none';
 var handler = function() {
  element.parentNode.removeChild(el2);
  element.style.display = '';
 }
 setTimeout(handler,25000);
}
//пример:
document.getElementById('changingLink').onclick = function() {
 linkToText(document.getElementById('changingLink'));
}

Изучаю_JS 01.02.2012 17:27

:-? а как это потом установить ? покажите пожалуйста готовый пример :(

Раед 01.02.2012 17:40

<html>
<head>
<script type="text/javascript">
function linkToText(element) {
 var text = element.innerHTML;
 var el2 = document.createElement('span');
 el2.innerHTML = text;
 element.parentNode.insertBefore(el2,element);
 element.style.display = 'none';
 var handler = function() {
  element.parentNode.removeChild(el2);
  element.style.display = '';
 }
 setTimeout(handler,25000);
}
function addListener(id){
document.getElementById(id).onclick = function() {
 linkToText(document.getElementById(id));
}
addListener('cl');
}
</script>
</head>
<body>
<a href="#" id="cl">view</a>
</body>
</html>

добавил ф-ию addListener. Она получает аргументом id и сама ставит обработчик

Изучаю_JS 01.02.2012 17:54

Раед, так я не понял, а как ставить текст который должен появиться, и еще как вставить ссылку которая тоже должна появиться после исчезании текста ?

Изучаю_JS 01.02.2012 17:58

Вот например скрипт:

<a onclick="toggle(hidden_content)" style="cursor:pointer">Я кнопка</a>
<div id="hidden_content" style="display: none;">А я текст и я исчезну после 25 секунды</div>
<script>
function toggle(el) {
el.style.display = (el.style.display == 'none') ? '' : 'none'
}
</script>


тут есть уже текст, и нужно сделать чтобы этот текст стояло 25 секунд, и исчезла, и сразу после исчезновения появлялась ссылка, сразу на место текста, и с эффектом "slow" хотя не важно..

Раед 01.02.2012 18:16

<a id="hidden_link" onclick="toggle('hidden_link','hidden_content')" style="cursor:pointer">Я кнопка</a>
<div id="hidden_content" style="display: none;">А я текст и я исчезну после 25 секунды</div>
<script>
function toggle(id1,id2) {
var el1 = document.getElementById(id1);
el1.style.display = 'none';
var el2 = document.getElementById(id2);
el2.style.display = 'block';
handler = function() {
 el2.style.display = 'none';
 el1.style.display = '';
}
setTimeout(handler,25000);
}
</script>

извините, эффект slow не знаю как реализовать
setTimeout - почитайте

Изучаю_JS 01.02.2012 18:28

slow не важно, но а где та ссылка которая появиться вместо текста ?

Раед 01.02.2012 18:30

то есть должна появляться новая, а не та, которую убрали?

Раед 01.02.2012 18:33

ну тогда вот:
<a id="hidden_link" onclick="toggle('hidden_link','hidden_content','after_process_link')" style="cursor:pointer">Я кнопка</a>
<div id="hidden_content" style="display: none;">А я текст и я исчезну после 25 секунды</div>
<a href="#" id="after_process_link">А я ссылка, которая появиться вместо блока</a>
<script>
function toggle(id1,id2,id3) {
var el1 = document.getElementById(id1);
el1.style.display = 'none';
var el2 = document.getElementById(id2);
el2.style.display = 'block';
handler = function() {
 el2.style.display = 'none';
 el1.style.display = '';
 document.getElementById(id3).style.display='inline';
}
setTimeout(handler,25000);
}
</script>

Изучаю_JS 01.02.2012 18:51

Раед, Спасибо большое! только вам нужно было добавить еще и display:none ) я сам поставил) спасибо еще раз!

irezvov 01.02.2012 19:17

Цитата:

Сообщение от Изучаю_JS (Сообщение 154632)
Раед, Спасибо большое! только вам нужно было добавить еще и display:none ) я сам поставил) спасибо еще раз!

вот это ты одолжение ему сделал, нельзя же так перетруждаться то!

Изучаю_JS 01.02.2012 19:42

irezvov, да нет, а если кто нить еще тупее меня в js по поиску найдет этот скрипт ? поэтому написал чтобы другие могли вставить код
display:none;

рони 02.02.2012 01:45

Изучаю_JS,
Вариант )))
<!DOCTYPE html>
<html>
<head>
  <title></title>
</head>
<body>
<a id="hidden_link" onclick="toggle(this)" style="cursor:pointer">Я кнопка</a>
<script>
function toggle(elem)
{ var text = ['я текст и я исчезну после 25 секунды','я ссылка, которая появиться вместо блока'];
  elem.innerHTML = text[0];
  elem.onclick = null;
  elem.style.cursor = 'text';
  setTimeout(function ()
{
  elem.href = 'http://javascript.ru/';
  elem.innerHTML = text[1];
  elem.style.cursor = 'pointer';
},25000);
}
</script>
</body>
</html>

Изучаю_JS 02.02.2012 21:23

рони, спасибо, тоже пригодиться.

shurik-malish 10.10.2015 09:33

А как подобную замену сделать не для ссылки, текста и ссылки, а для 3х div-ов?
Т.е. первый div кнопка, по клику он скрыается и появляется второй, а через N секунд второй сменяется третьим..
Или можно эти 2 div-а прописать вместо ['я текст и я исчезну после 25 секунды','я ссылка, которая появиться вместо блока'];?

рони 10.10.2015 10:25

открытие через паузу
 
shurik-malish,
для теста 5 сек. кликать на 1 блок
<!DOCTYPE html>
<html>
<head>
  <title></title>
  <meta charset="utf-8">
  <style type="text/css">
  .bl{
    display: none;
  }
  .bl.active{
    display: block;
  }
  </style>
</head>
<body>
<div class="bl active">1 блок</div>
<div class="bl">2 блок</div>
<div class="bl">3 блок</div>
<script>
var bl = document.querySelectorAll(".bl"),
    n = 0;

function fn() {
    bl[n++].classList.remove("active");
    bl[n].classList.add("active")
}
bl[n].addEventListener("click", function() {
    fn();
    setTimeout(fn, 5000)
});
</script>
</body>
</html>

shurik-malish 10.10.2015 18:43

спасибо большое


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