Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Повторное выполнение функции при нажатии


Автор: serezhka1986 23.11.2011, 13:18
Стоит задача выполнить функцию при нажатии на ссылку.
Есть ссылка:
Код

<a href="/auth/" onclick="return authFormWindow.ShowLoginForm()">Войти</a>

Мне нужно на странице произвольно выполнить событие нажатия на ссылку.
Что-то типа:
Код

<script type="text/javascript">return authFormWindow.ShowLoginForm()</script>

Подскажите, пожалуйста, решение данной задачи.  smile 

Автор: serezhka1986 28.11.2011, 12:47
Нашел в интернете такое решение
1. Задать ID для ссылки:
Код

<a id="jslink" href="/auth/" onclick="return authFormWindow.ShowLoginForm()">Войти</a>

2.Вызывать скрипт:
Код

<script type="text/javascript">
      document.getElementById('jslink').onclick();
</script>

Но у меня почему-то не работает данный метод.  smile 

Автор: bars80080 28.11.2011, 12:50
Код

<script type="text/javascript">
      document.getElementById('jslink').click();
</script>



Добавлено через 57 секунд
а ещё лучше просто:



Код

<script type="text/javascript">
      authFormWindow.ShowLoginForm();
</script>


Автор: ksnk 28.11.2011, 13:02
Цитата(serezhka1986 @  28.11.2011,  12:47 Найти цитируемый пост)
Но у меня почему-то не работает данный метод.

Вероятно, следует дождаться загрузки страницы
Код

<script type="text/javascript">
function do_it(){
  authFormWindow.ShowLoginForm();
}
</script>

<body onload="do_it()">
...

Автор: serezhka1986 28.11.2011, 13:06
Первый метод ничего не дает - функция клика не выполняется.
А второй вообще работает коряво. Вроде и срабатывает, но результат такого вызова и обычного клика отличается.

Добавлено через 3 минуты и 36 секунд
Цитата(ksnk @  28.11.2011,  13:02 Найти цитируемый пост)
Вероятно, следует дождаться загрузки страницы


Так мне ведь не нужно вызывать функцию при загрузке страницы, а при определенном условии. Например:
Код

<?if ($arResult["SHOW_ERRORS"] == "Y" && $arResult["ERROR"] === true):?>
<script type="text/javascript">return authFormWindow.ShowLoginForm()</script>
<?endif?>

Автор: serezhka1986 28.11.2011, 13:56
Проблема решена!!!  smile 
Работало коряво потому, что надо было ждать загрузки страницы. Спасибо ksnk и bars80080!
Кому интересно, решение такое:
Код

<?if ($arResult["SHOW_ERRORS"] == "Y" && $arResult["ERROR"] === true):?>

<script type="text/javascript">
  function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') { window.onload = func;} 
  else {window.onload = function() { if (oldonload) {oldonload();}func();}}
}
addLoadEvent(function() {
 authFormWindow.ShowLoginForm();
}); 
</script>

<?endif?>

Это загрузка Javascript (без onload). Материал взял отсюда: http://deer.org.ua/2008/06/27/4


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)