Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > ипользование setInterval


Автор: Reet 19.11.2009, 13:37
подскажите есть галерея к ней подключена функция автоматического перелистывания фоток вот функция:

Код

var current=1;

function autoAdvance()
{
$('#menu ul li a')[current%$('#menu ul li a').length].click();
current++;
}
var itvl = setInterval("autoAdvance()",5000);


Она работает в IE и в Opera а вот в мозиле фотки не перелистываются подскажите где что исправить чтоб работала в мозиле
    
отлдачик мозилы firebug ругается на эту строчку:
Цитата

$("ul li a")[current % $("ul li a").length].click     is not a function


Автор: Aliance 19.11.2009, 17:45

M
Aliance
Пожалуйста, пользуйтесь кнопкой код!


Попробуй так:
Код

var current=1;
var $link = $( '#menu ul li a' );
function autoAdvance()
{
    $link.eq( current++ % $link.size() ).trigger( 'click' );
}
var itvl = setInterval("autoAdvance()",5000);

Автор: Reet 20.11.2009, 07:15
попробовал так тоже неработает и перестает работать в других браузерах

Автор: diadiavova 20.11.2009, 23:45
Reet, а разве у файрфоксовских элементов есть метод click?

Автор: Reet 21.11.2009, 04:43
вот я тоже сомневаюсь

Автор: diadiavova 21.11.2009, 10:02
Цитата(Reet @  21.11.2009,  04:43 Найти цитируемый пост)
вот я тоже сомневаюсь 
Я проверил прежде чем спрашивать. smile 

Автор: Reet 21.11.2009, 12:04
я бы тоже проверил если бы разбирался в javascript поэтому и пришел на форум чтоб помогли!!!

Автор: diadiavova 21.11.2009, 15:32
Вместо метода click вызывай обработчик события onclick. 
Код

<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=windows-1251">
    </head>
    <input type="button" id="btn" onclick="btn_click();" value="кнопка"/>
    <body>
        <script type="text/javascript">
            function btn_click()
            {
                alert("А вот и я!");
            }
            var btn = document.getElementById("btn");
            btn.onclick();
            btn.onclick();
        </script>
    </body>
</html>

Автор: Reet 21.11.2009, 16:16
мне не совсем понятно как мне это применить

Автор: diadiavova 21.11.2009, 16:23
Цитата(Reet @  21.11.2009,  16:16 Найти цитируемый пост)
мне не совсем понятно как мне это применить 

А разве этот пример делает не то, что тебе надо? Здесь событию click кнопки назначен обработчик и именно этот обработчик и вызывается. Если событию назначить другой обработчик, то таким способом будет вызываться он. Собственно, это практически то же самое, что эмуляция клика. В принципе ты можешь отсутствующий метод просто добавить объектам, в которых он вызывается и тогда твой код тоже заработает.
Чтобы добавить объекту нужный тебе метод просто напиши примерно такой код
Код

myButton.click = function(){this.onclick();}//здесь myButton - элемент, к которому добавляется метод
по идее должно сработать. Как это сделать через jqery(или через что ты там делаешь?) я , честно говоря, не в курсе. Ну и естественно тип браузера надо сначала проверить, поскольку в других браузерах этот метод и так есть у элементов.

Автор: Reet 21.11.2009, 17:53
diadiavova подскажи еще как мне правельyо сделать моя функция которую я привел в начале обработывает вот эту часть кода :
Код

 <div id="menu">
    <ul>
      <li ><a href=""><img class="pic_gal" src="image/galer_service/sample_slides/1_mini.jpg" alt="thumbnail" /></a></li>
       <li><a href=""><img class="pic_gal"src="image/galer_service/sample_slides/2_mini.jpg" alt="thumbnail" /></a></li>
  </ul>
    

в функции и прописано что бы она работала с id= menu и тегами "li" как мне правельно сформулировать твой пример

Автор: diadiavova 22.11.2009, 00:34
Я не силён в джейквэрях, так что будет ли работать не знаю, но видимо как-то так
Код

var current=1;
function autoAdvance()
{
$('#menu ul li a')[current%$('#menu ul li a').length].click = function(){this.onclick();};
$('#menu ul li a')[current%$('#menu ul li a').length].click();
current++;
}
var itvl = setInterval("autoAdvance()",5000);
Или сначала так попробуй
Код

var current=1;
function autoAdvance()
{
$('#menu ul li a')[current%$('#menu ul li a').length].onclick();
current++;
}
var itvl = setInterval("autoAdvance()",5000);

Автор: Reet 22.11.2009, 08:15
diadiavova - оба скрипта не работают но все равно спасибо за помощь последний вопрос как просто задать функцию чтоб через 5 секунду браузер сам кликнул по ссылке

пример есть ссылка <a href="1111.html">1111111111111</a>

как к ней дописать функцию чтоб через 5секунд по ней кликнул сам браузер? 

Автор: diadiavova 22.11.2009, 12:21
Не работают видимо потому, что надо кликать по ссылкам, а не по элементам, подписанным на событие click. Я чойт не подумал сразу об этом, ступил кароч smile 
Если надо перейти на другую страницу, то обычно используется что-то вроде
Код

document.location.href = "http://www.google.ru/"
В твоём случае можно вытащить из ссылки адрес и сделать таким же образом. Как-то так
Код

<html><head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251"></head><body onload="setTimeout('goGoogle();', 5000);">
<a href="http://www.google.ru/" id="googlelink">гуголь</a>
<script type="text/javascript">
function goGoogle()
{
    document.location.href = document.getElementById("googlelink").href;
}
</script>
</body></html>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)