У меня есть функция onclick, которая выполняет несколько задач. В другой функции JavaScript у меня нет доступа к контекстным переменным, необходимым для выполнения этих задач. Чтобы обойти это, я просто вызываю функцию onclick напрямую.
Проблема, с которой я столкнулся сейчас, заключается в том, что я хотел бы выполнить задачу после завершения действия Ajax в onclick. Можно ли как-нибудь передать функцию методу onclick ссылки? Как будет выглядеть атрибут onclick?
например. как то так:
<a id="link3" href="javascript:void(0);" onclick="function(callback) { X(a); Y(b); Z(c, callback); };">click me</a>
Нажатие на это передаст "undefined" в качестве обратного вызова, в то время как я мог бы также вызвать его явно так:
document.getElementById("link3").onclick(function() { alert("Completed all tasks"); } );
Возможно ли что-то подобное? По сути, я хочу иметь возможность передавать необязательный параметр в метод onclick, но если он отсутствует, я хочу, чтобы он вел себя так, как если бы в onclick был только процедурный код.
РЕДАКТИРОВАТЬ: Добавлено больше подробностей
Вариант использования: onclick вызывает функцию поиска, для которой требуются переменные сеанса. Когда выполняются регулярные поиски, проблем нет, но когда я хочу обновить результаты поиска (например, когда пользователь редактирует или удаляет один из возвращенных результатов), мне нужно вызвать ту же функцию поиска, которая была вызвана ранее, а затем распечатать сообщение обратной связи после обновления. Этот вывод сообщения обратной связи - это то, что я хотел бы использовать в методе обратного вызова. Я также хотел бы установить в window.location.href страницу вниз к соответствующей строке в случае редактирования или вставки.
У меня есть доступ к нескольким переменным на стороне сервера, которые я распечатываю непосредственно в атрибуте onclick при рендеринге страницы. В других файлах Javascript, которые я включаю на своей странице, я также хотел бы иметь возможность выполнять те же функции, которые содержатся в onclick. Единственная проблема в том, что мне пришлось бы передавать все эти переменные этим функциям косвенно через несколько промежуточных методов в цепочке вызовов.
Другой вариант - распечатать эти значения в скрытых значениях страницы, а затем извлечь их из моего метода, но я бы хотел избежать этого, так как это могло бы загромождать все просто, чтобы я мог украсить свой вызов функции некоторым визуальным после того, как побочные эффекты.