Потеря переменной при повторении функции ?
Здравствуйте !
Вот такой код: <!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 ! Подскажите в чём проблема ? |
timeoutId = setTimeout( /*begin!*/ function(){function_a(x)} /*end!*/, 20); |
Понятно , спасибо !
И ещё вопрос можно onClick в кнопке не писать, а сразу в js как то так: document.getElementById('but_1').onClick="test()"; ? |
document.getElementById('but_1').onclick = test |
Неработает ! Может я что не так делаю ?
<!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> |
<!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> |
А если мне нужно определить какая кнопка была нажата, так можно ? =>
<!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> |
Да, вполне. Но лучше делать не так, а использовать то, что в функции test, вызванной из онклик, this ссылается на элемент-кнопку. И так определять, какая именно нажата.
|
Ок, ещё раз спасибо !
|
Часовой пояс GMT +3, время: 10:33. |