Гость
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / запуск функции с переменной при помощи setTimeout / 12 сообщений из 12, страница 1 из 1
07.02.2007, 11:15
    #34311703
VanSanblch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск функции с переменной при помощи setTimeout
Второй день бьюсь - безрезультатно.

Есть код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
<html>
<head>
<!-- HEAD START HERE -->
</head>
<body>
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin

//объявляем массив с цветами
var colors=new Array(
"FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF",
"FFFFFF","F9F9F9","F1F1F1","E9E9E9","E1E1E1","D9D9D9",
"D1D1D1","C9C9C9","C1C1C1","B9B9B9","B1B1B1","A9A9A9",
"A1A1A1","999999","919191","898989","818181","797979",
"717171","696969","616161","595959","515151","494949",
"414141","393939","313131","292929","212121","191919",
"111111","090909","000000");

//переменные для пошагового прохождения по массиву
var a= 0 ;
var b= 1 ;

//функция изменения цвета
function test(obj) {
	obj.style.color = colors[a];
	a+=b;
	if (a== 38 ) b-= 2 ;
	if (a== 0 ) b+= 2 ;
}
// End -->

//вызов функции
function qqq(obj){
	alert(obj.id);
	setTimeout("test(obj)", 100 );
}

</SCRIPT>
<!-- HEAD END HERE -->

<!-- BODY START HERE -->

<div id="object1" onmouseover="qqq(this)" style="background:red;">test</div>
<!-- BODY END HERE -->
</body>
</html>

У DIV-ного элемента object1 надо поменять цвет... При вышеизложенном коде выдаёт сообщение - Error: 'obj' is undefined

Если же в лобовую в самой функции test (которая меняет цвет) прописать что "меняй цвет у такого-то элемента" (например так - document.getElementById('object1').style.color=colors[a]), а в функции qqq() прописать setTimeout("test()",100); - всё работает.

Можно, конечно, под каждый элемент создать свою функцию - таких элементов на странице будет не много, но должен же быть способ вызова функции с передачей переменной
...
Рейтинг: 0 / 0
07.02.2007, 11:17
    #34311719
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск функции с переменной при помощи setTimeout
Предлагаю obj не передавать через параметр, а сделать глобальной переменной. Либо передавать как параметр не сам объект, а его имя как стринг.
...
Рейтинг: 0 / 0
07.02.2007, 11:27
    #34311775
VanSanblch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск функции с переменной при помощи setTimeout
Владимир СанычПредлагаю obj не передавать через параметр, а сделать глобальной переменной.
Через глобальную переменную работает... Но по сути это тоже самое что объявить локальную в самой функции смена цвета.

Владимир СанычЛибо передавать как параметр не сам объект, а его имя как стринг.
От передачи не объекта, а его айдишника (с последующим получением элемента по айдишнику) ничего не изменилось - таже самая ошибка: "такая-то переменная не определена".
...
Рейтинг: 0 / 0
07.02.2007, 11:36
    #34311829
Nefertiri
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск функции с переменной при помощи setTimeout
Попробуйте изменить следующие куски:
VanSanblch
//переменные для пошагового прохождения по массиву
var a=0;
var b=1;
var obj=0;

//функция изменения цвета
function test(obj) {
//obj.style.color = colors[a];
//вместо старого пуска
document.all("object" + obj).style.color= colors[a];
a+=b;
if (a==38) b-=2;
if (a==0) b+=2;
}
// End -->
.
.
.

<div id="object0" onmouseover="qqq(0)" style="background:red;">test</div>
.
.
.


тогда пронумровав id-шники и давая в функцию разные параметры, можете менять цвет для любого количества объектов
...
Рейтинг: 0 / 0
07.02.2007, 11:38
    #34311842
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск функции с переменной при помощи setTimeout
VanSanblchОт передачи не объекта, а его айдишника (с последующим получением элемента по айдишнику) ничего не изменилось - таже самая ошибка: "такая-то переменная не определена".
Возможно, у Вас теперь какая-то более простая ошибка. Приведите код и на какой строке не работает.
...
Рейтинг: 0 / 0
07.02.2007, 11:48
    #34311901
VanSanblch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск функции с переменной при помощи setTimeout
Владимир СанычВозможно, у Вас теперь какая-то более простая ошибка. Приведите код и на какой строке не работает.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
<html>
<head>
<title></title>
<!-- HEAD START HERE -->
</head>
<body>

<!-- HEAD END HERE -->

<!-- BODY START HERE -->
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin

var colors=new Array(
"FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF",
"FFFFFF","F9F9F9","F1F1F1","E9E9E9","E1E1E1","D9D9D9",
"D1D1D1","C9C9C9","C1C1C1","B9B9B9","B1B1B1","A9A9A9",
"A1A1A1","999999","919191","898989","818181","797979",
"717171","696969","616161","595959","515151","494949",
"414141","393939","313131","292929","212121","191919",
"111111","090909","000000");

var a= 0 ;
var b= 1 ;


function test(str) {
	documnet.getElementById(str).style.color = colors[a];
	a+=b;
	if (a== 38 ) b-= 2 ;
	if (a== 0 ) b+= 2 ;
}
// End -->

function qqq(str){
	setInterval("test(str)", 10 );
}

</SCRIPT>
<div id="object1" onmouseover="qqq('object1')" style="background:red;">test</div>
<div id="object2">test</div>

<!-- BODY END HERE -->
</body>
</html>

Ругается словами - Error: 'str' is undefined
То есть то же самое, только другая переменная.
...
Рейтинг: 0 / 0
07.02.2007, 11:54
    #34311928
VanSanblch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск функции с переменной при помощи setTimeout
Nefertiriтогда пронумровав id-шники и давая в функцию разные параметры, можете менять цвет для любого количества объектов

Найн, бесполезно.

Проблема не в назвниях или получении элемента по айдишнику. Загвоздка именно в периодическом вызове функции с передачей ей одного и того же параметра, определённого ранее... (самому бы не запутаться...)
...
Рейтинг: 0 / 0
07.02.2007, 11:58
    #34311952
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск функции с переменной при помощи setTimeout
VanSanblch setInterval("test(str)",10);
Я нечетко выразился. Имелось в виду вот что:

Код: plaintext
setInterval("test('"+str+"')", 10 );
...
Рейтинг: 0 / 0
07.02.2007, 11:59
    #34311963
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск функции с переменной при помощи setTimeout
М.б. Замыкания в JavaScript , IE 5.0: Аргументы функции при вызове через setTImeout(); Вам помогут?
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
07.02.2007, 12:02
    #34311976
VanSanblch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск функции с переменной при помощи setTimeout
Владимир СанычЯ нечетко выразился. Имелось в виду вот что:

Код: plaintext
setInterval("test('"+str+"')", 10 );

Работает... Только почему - непонятно...
Ща будем разбираться :)
...
Рейтинг: 0 / 0
07.02.2007, 12:03
    #34311980
VanSanblch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск функции с переменной при помощи setTimeout
Ex_SoftМ.б. Замыкания в JavaScript , IE 5.0: Аргументы функции при вызове через setTImeout(); Вам помогут?
_________________
"Helo, word!" - 17 errors 56 warnings

Обязательно. Ща поймём где собака порылась.
...
Рейтинг: 0 / 0
07.02.2007, 12:09
    #34312018
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запуск функции с переменной при помощи setTimeout
VanSanblchРаботает... Только почему - непонятно...
Потому что у меня в качестве параметра передается не переменная, а константа.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / запуск функции с переменной при помощи setTimeout / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]