Как передать аргумент, если в функции инициализации назначен обработчик события? - PullRequest
0 голосов
/ 24 сентября 2010

Всегда хорошо разделять уровень представления и поведение между HTML и Javascript на основе первой книги.

Они говорят мне не делать:

<textarea onclick="showAlert()"></textarea>

Но вместо этого делайте ниже:

Пример ниже отделяет поведение от кода HTML (структура).

<html>
<head>

<script type="text/javascript">
window.onload = init;

function init() {
  $('txt_area').onclick = showAlert;
}

function showAlert(say) {
  alert(say);
}
</script>
</head>
<body>
<textarea id="txt_area"></textarea>
</body>
</html>

Это позволяет HTML (структуре) выглядеть чисто, а часть «поведения» инициализируется в функции init ()когда страница загружается.Я понимаю, что до сих пор.

Но тогда мне интересно, как я должен передать аргумент функции showAlert () ???

Ниже не работает, он будет вызывать showAlert ()как только страница загрузится, и это не то, что я хочу, потому что она должна быть запущена по клику.

function init() {
  $('txt_area').onclick = showAlert("hello");
}

Можно ли передать аргументы в функцию showAlert (), но при этом разделить поведение и структуру?

ОБНОВЛЕНИЕ

Забыл упомянуть ... Я использую прототип.

1 Ответ

3 голосов
/ 24 сентября 2010

Оберните ваш код в функцию.

$('txt_area').onclick = function() {
    showAlert("hello");
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...