Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.03.2013, 16:39
Новичок на форуме
Отправить личное сообщение для Astrey Посмотреть профиль Найти все сообщения от Astrey
 
Регистрация: 26.02.2013
Сообщений: 8

Исчезающие меню, как сделать стандартными методами?
Хочу сделать вот что: Выпадающие меню - так, что бы каждая последующая строка появлялась через определенный интервал, но со стандартными методами setInterval, setTimeout не чего не вышло (возможно я не правильно подошел к решению задачи). Попробовал сделать так: бесконечный цикл обрывается через секунду работы, и по окончанию исчезает один элемент. Это работает только с одним элементом. Если сделать с большим числом элементов - компьютер зависает и исчезают сразу все строки. Вопрос: Возможно ли решить эту задачу стандартными методами (бес подключения библиотек), и главное как?
Ответить с цитированием
  #2 (permalink)  
Старый 06.03.2013, 18:21
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Конечно можно. HTML-код со стилями в студию. И ваш js-код, который вы сумели написать. Кстати вопрос - чем не устраивает jquery или иные библиотеки для анимации?
Ответить с цитированием
  #3 (permalink)  
Старый 07.03.2013, 09:56
Новичок на форуме
Отправить личное сообщение для Astrey Посмотреть профиль Найти все сообщения от Astrey
 
Регистрация: 26.02.2013
Сообщений: 8

Устаревает. Но я хотел бы узнать - способен ли это сделать сам JS без библиотек.
Мой код:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title></title>
</head>
<body onload="style_function()">
<table id="table00" border="3">
<tr>
<td onclick="height_function()"></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
</table>
<script type="text/javascript">

function style_function(){

sell = document.getElementById('table00').getElementsByTa gName("td");
for(i=0; i<sell.length; i++){

sell[i].style.width = '200px';
sell[i].style.height = '50px';

}

}

function height_function(){

sell = document.getElementById('table00').getElementsByTa gName("td");

var i = 0;
while(i<5){

var date00 = new Date();
var seconds = date00.getSeconds();

while(true){
var date01 = new Date();
if(seconds !== date01.getSeconds())break;
}

sell[i].style.display = "none";

i++;

}
}
</script>
</body>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 07.03.2013, 10:56
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Код отформатируйте.
Сообщение от Astrey
способен ли это сделать сам JS без библиотек
А библиотеки на чем пишут по вашему? На ассемблере чтоли? Просто зачем писать что-то, если это уже давно написано, оптимизировано и включено в готовую библиотеку? Если ради интереса - то помоему у вас слишком мало опыта с js чтобы таким заниматься.
Ответить с цитированием
  #5 (permalink)  
Старый 07.03.2013, 23:28
Новичок на форуме
Отправить личное сообщение для Astrey Посмотреть профиль Найти все сообщения от Astrey
 
Регистрация: 26.02.2013
Сообщений: 8

Ну что же, должно быть вы праву. Не стоит выделываться
Ответить с цитированием
  #6 (permalink)  
Старый 07.03.2013, 23:53
Аватар для megaupload
Профессор
Отправить личное сообщение для megaupload Посмотреть профиль Найти все сообщения от megaupload
 
Регистрация: 18.01.2013
Сообщений: 1,098

на, заебал http://habrahabr.ru/post/111658/
Ответить с цитированием
  #7 (permalink)  
Старый 08.03.2013, 14:35
Интересующийся
Отправить личное сообщение для _SR_71_ Посмотреть профиль Найти все сообщения от _SR_71_
 
Регистрация: 15.03.2012
Сообщений: 15

Попытался решить вашу задачу
<style type="text/css">
    #table00 td {
      width: 200px;
      height: 50px;
    }
</style>
<script type="text/javascript">

  function height_function() {
    var sell = document.getElementById('table00').getElementsByTagName("td");
    var i = sell.length;
    
      setTimeout(function run() { sell[i].style.display = "none";
      var t = setTimeout(run, 1000);
      i--;
      if(i == 0)
        clearTimeout(t); }, 1000);
  }
  
</script>

</head>
<body>
<table id="table00" border="3">
<tr>
<td onclick="height_function()"></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
</table>

</body>

Но возникает проблема, внутри setTimeout не видны элементы sell. Если кто знает в чем проблема, отпишитесь пожалуйста.
Ответить с цитированием
  #8 (permalink)  
Старый 08.03.2013, 15:07
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от _SR_71_
Но возникает проблема, внутри setTimeout не видны элементы sell.
setTimeout(function () {
   var run=function () { sell[i].style.display = "none";
      i--; if(i == 0) {clearTimeout(t); return;}
     var t = setTimeout(run, 1000);
  }
}, 1000);

Элемента с i=sell.length; - Нет

Последний раз редактировалось Deff, 08.03.2013 в 15:37.
Ответить с цитированием
  #9 (permalink)  
Старый 08.03.2013, 15:14
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от _SR_71_
Но возникает проблема, внутри setTimeout не видны элементы sell
Это не так. Просто должно быть:
var i = sell.length -1 ;


var t = setTimeout(run, 1000);
i--;
if(i == 0)
 clearTimeout(t);

Что? Сначала ставим таймер, потом начинаем думать, и если таймер не нужен - стираем? Может сразу начать думать (делать проверку) и не ставить таймер когда не надо?

И sell - тело продавать, а ячейки - это cells
Ответить с цитированием
  #10 (permalink)  
Старый 08.03.2013, 15:35
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Ксать чот криво вообще построено, вроде так интересней:


<script type="text/javascript">

  function height_function() {
    var sell = document.getElementById('table00').getElementsByTagName("td");
    var i = sell.length;
    function run () {
        var tim0 = setTimeout(function () {
              i--; if(i == 0) {clearTimeout(tim0); return;}
             sell[i].style.display = "none";
         }, 1000);
         run ();
    }
}

</script>

Последний раз редактировалось Deff, 08.03.2013 в 15:46.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать выпадающее меню voloxa89 jQuery 7 20.08.2011 11:27
Как сделать реакцию на изменение любого элемента формы. Mik Events/DOM/Window 3 28.07.2011 08:52
Как убрать hover? Либо как сделать стрелки статичными? krusty36 Элементы интерфейса 1 13.07.2011 09:20
Как сделать, чтобы выпадающее меню оставалось развернутым? Эдгар Элементы интерфейса 1 28.02.2011 19:43
Раскрывающееся меню, как переставить на другую сторону? Resager Events/DOM/Window 8 22.08.2008 21:56