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

Есть код:
Код: 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
запуск функции с переменной при помощи setTimeout
    #34311719
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю obj не передавать через параметр, а сделать глобальной переменной. Либо передавать как параметр не сам объект, а его имя как стринг.
...
Рейтинг: 0 / 0
запуск функции с переменной при помощи setTimeout
    #34311775
VanSanblch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир СанычПредлагаю obj не передавать через параметр, а сделать глобальной переменной.
Через глобальную переменную работает... Но по сути это тоже самое что объявить локальную в самой функции смена цвета.

Владимир СанычЛибо передавать как параметр не сам объект, а его имя как стринг.
От передачи не объекта, а его айдишника (с последующим получением элемента по айдишнику) ничего не изменилось - таже самая ошибка: "такая-то переменная не определена".
...
Рейтинг: 0 / 0
запуск функции с переменной при помощи setTimeout
    #34311829
Nefertiri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуйте изменить следующие куски:
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
запуск функции с переменной при помощи setTimeout
    #34311842
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VanSanblchОт передачи не объекта, а его айдишника (с последующим получением элемента по айдишнику) ничего не изменилось - таже самая ошибка: "такая-то переменная не определена".
Возможно, у Вас теперь какая-то более простая ошибка. Приведите код и на какой строке не работает.
...
Рейтинг: 0 / 0
запуск функции с переменной при помощи setTimeout
    #34311901
VanSanblch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир СанычВозможно, у Вас теперь какая-то более простая ошибка. Приведите код и на какой строке не работает.
Код: 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
запуск функции с переменной при помощи setTimeout
    #34311928
VanSanblch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nefertiriтогда пронумровав id-шники и давая в функцию разные параметры, можете менять цвет для любого количества объектов

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

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

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

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

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

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


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