Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.11.2009, 15:59
Профессор
Отправить личное сообщение для Andrei Посмотреть профиль Найти все сообщения от Andrei
 
Регистрация: 31.10.2009
Сообщений: 151

Потеря переменной при повторении функции ?
Здравствуйте !
Вот такой код:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>test</title>
</head>
<body onLoad="delta(progress)">

<script type="text/javascript">

var n = 0 ;
function function_a(x){
alert (x);
if (n < 4){
n++;
timeoutId = setTimeout(function_a, 20);
}
}

</script>

<button class="but_menu" onClick="function_a(1)" >test</button></a>
</body>
</html>


Проблема в том что при первом запуске функции она выдаёт x, но при последующих запусках x теряется и выдаёт undefined !
Подскажите в чём проблема ?

Последний раз редактировалось Andrei, 04.11.2009 в 16:02.
Ответить с цитированием
  #2 (permalink)  
Старый 04.11.2009, 17:55
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

timeoutId = setTimeout(
/*begin!*/
function(){function_a(x)}
/*end!*/, 20);
Ответить с цитированием
  #3 (permalink)  
Старый 04.11.2009, 18:12
Профессор
Отправить личное сообщение для Andrei Посмотреть профиль Найти все сообщения от Andrei
 
Регистрация: 31.10.2009
Сообщений: 151

Понятно , спасибо !
И ещё вопрос можно onClick в кнопке не писать, а сразу в js как то так:
document.getElementById('but_1').onClick="test()"; ?
Ответить с цитированием
  #4 (permalink)  
Старый 04.11.2009, 18:40
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

document.getElementById('but_1').onclick = test
Ответить с цитированием
  #5 (permalink)  
Старый 04.11.2009, 18:48
Профессор
Отправить личное сообщение для Andrei Посмотреть профиль Найти все сообщения от Andrei
 
Регистрация: 31.10.2009
Сообщений: 151

Неработает ! Может я что не так делаю ?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>test</title>
</head>
<body >

<script type="text/javascript">
function test(){
alert("работает");
}

document.getElementById('but_1').onclick = test;
</script>

<button class="but_menu" id="but_1">Test</button></a>
</body>
</html>
Ответить с цитированием
  #6 (permalink)  
Старый 04.11.2009, 18:52
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>test</title>
<script type="text/javascript">
<!--
function test(){
alert("работает");
}
function init() {
document.getElementById('but_1').onclick = test;
}
//-->
</script>
</head>
<body onload="init()"> 
<button class="but_menu" id="but_1">Test</button></a>
</body>
</html>
Ответить с цитированием
  #7 (permalink)  
Старый 04.11.2009, 19:03
Профессор
Отправить личное сообщение для Andrei Посмотреть профиль Найти все сообщения от Andrei
 
Регистрация: 31.10.2009
Сообщений: 151

А если мне нужно определить какая кнопка была нажата, так можно ? =>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>test</title>

<script type="text/javascript">
<!--
function test(){
if (a == 1){
alert ("кнопка 1 ");
}else if (a == 2){
alert ("кнопка 2 ");
}
}
function init() {
document.getElementById('but_1').onclick = function(){a=1;test();};
document.getElementById('but_2').onclick = function(){a=2;test();};

}
//-->
</script>
</head>
<body onload="init()">
<button class="but_menu" id="but_1">Test</button></a>
<button class="but_menu" id="but_2">Test</button></a>

</body>
</html>
Ответить с цитированием
  #8 (permalink)  
Старый 04.11.2009, 19:26
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Да, вполне. Но лучше делать не так, а использовать то, что в функции test, вызванной из онклик, this ссылается на элемент-кнопку. И так определять, какая именно нажата.
Ответить с цитированием
  #9 (permalink)  
Старый 04.11.2009, 19:41
Профессор
Отправить личное сообщение для Andrei Посмотреть профиль Найти все сообщения от Andrei
 
Регистрация: 31.10.2009
Сообщений: 151

Ок, ещё раз спасибо !
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов функции при загрузке страницы disallow jQuery 6 24.07.2012 15:19
хитросплетения Global,контекст,this,Reference kefi Общие вопросы Javascript 109 20.11.2009 23:34
Кросс-браузерные функции B~Vladi Ваши сайты и скрипты 128 01.09.2009 17:11
PHP ООП и вложенные функции Tim Серверные языки и технологии 6 15.06.2009 08:01
не работают функции при их вызове(не отображаются кнопки) badfilin Общие вопросы Javascript 0 08.04.2008 20:18