X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Вызов функции с параметрами в setTimeout()
goshikvia
goshikvia
Topic Starter сообщение 17.5.2009, 1:28; Ответить: goshikvia
Сообщение #1


Доброе время суток!
Вот замучался, все никак не получается передать параметр в функцию которая вызывается в setTimeout(). Где моя ошибка?
[PHP]
var j = 0;
var Pic = new Array();
Pic[0] = 'kalyan_4.jpg';
Pic[1] = 'kalyan_2.jpg';
Pic[2] = 'kalyan_3.jpg';
Pic[3] = 'kalyan_1.jpg';
var j = 0;
var p = Pic.length;
var preLoad = new Array();
for (i = 0; i < p1; i++){
preLoad[i] = new Image();
preLoad[i].src = Pic[i];
}
function runSlideShow(y)
{
var x=document.getElementById(y);
if (document.all){
x.style.filter='blendTrans(duration=2)';
x.style.filter='blendTrans(duration=3)';
x.filters.blendTrans.Apply();
}
x.src = preLoad[j].src;
if (document.all){
x.filters.blendTrans.Play();
}
j = j + 1;
if (j > (p-1))
j=0;
setTimeout("runSlideShow(y)", 3000);
}
[/PHP]
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Galen
Galen
сообщение 17.5.2009, 17:11; Ответить: Galen
Сообщение #2


Параметр функции текстовый, его нужно брать в кавычки.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
goshikvia
goshikvia
Topic Starter сообщение 17.5.2009, 17:25; Ответить: goshikvia
Сообщение #3


Что и в какие кавычки?!
если написать:
setTimeout("runSlideShow('y')", 3000);
то тогда я как будто передаю новый id равный "y", что не есть хорошо.

[/COLOR]
Нужно чтобы тот Y который функция получила, передался в функцию РЕКУРСИВНО!

[COLOR=black]P.S. в качестве параметра передается ID.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Galen
Galen
сообщение 17.5.2009, 18:00; Ответить: Galen
Сообщение #4


Нужно чтобы тот Y который функция получила, передался в функцию РЕКУРСИВНО!
Сохраните его отдельно в какой-нибудь глобальной переменной (в тот момент, когда он впервые получается) и дальше уже в вашей функции (которую вызываете через таймер) работайте не с параметром функции, а с глобальной переменной.

Либо попробуйте написать так:
setTimeout("runSlideShow(" + y + ")", 3000);
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
goshikvia
goshikvia
Topic Starter сообщение 17.5.2009, 18:20; Ответить: goshikvia
Сообщение #5


(Galen @ 17.5.2009, 21:00) *
Либо попробуйте написать так:
setTimeout("runSlideShow(" + y + ")", 3000);


Хорошая идея, но так пройдет если "у" число, а если более сложный элемент, например объект, то тогда так:
setTimeout(function(k){return function(){runSlideShow(k)}}(y),3000);
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Galen
Galen
сообщение 17.5.2009, 18:32; Ответить: Galen
Сообщение #6


Если объект, то первый вариант.
А вообще по вашему коду там ничего кроме текста быть не может :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
goshikvia
goshikvia
Topic Starter сообщение 17.5.2009, 19:39; Ответить: goshikvia
Сообщение #7


представил пример простой, сейчас доработал функцию и она работает с 4 параметрами.

Первый метод невсегда хорошо работает, хотя очень часто применяется!
А у второго метода недостаток в громостности и сложности восприятия, но зато всегда работает :)

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыCrakRevenue "Декабрьский Вызов!"
0 joncrakrevenue 1019 30.11.2021, 18:54
автор: joncrakrevenue
Открытая тема (нет новых ответов) Продажа твиттер аккаунтов с вашими параметрами
2 TemXBY 1668 10.6.2013, 0:19
автор: TemXBY
Открытая тема (нет новых ответов) Smarty и собственные функции
Как реализовать?
3 RussiaStudent 8552 12.12.2009, 18:41
автор: ZiTosS
Открытая тема (нет новых ответов) Вызов функциии
помогите с синтаксисом
3 Вячеслав 2020 25.9.2009, 0:57
автор: Вячеслав


 



RSS Текстовая версия Сейчас: 19.4.2024, 21:53
Дизайн