2012-05-08 3 views
2

Я пытаюсь что-то вроде этогомы можем назвать две функции OnClick событие

<div onclick="check_update('personal_details') ; showUser(2)">Click me </div> 

но только check_update («personal_details») становится называется. Я хочу выполнить две отдельные функции одновременно с нажатием кнопки DIV. Любая помощь будет отличной для меня, поскольку я все еще участвую в фазе обучения. Заранее спасибо.

ответ

2

Используйте функцию в закрытии. Замените otherFunction на имя второй функции, которую вы хотите позвонить, и все должно работать должным образом.

<div onclick="(function(){check_update('personal_details'); otherFunction(); })()">Click me </div> 
+0

Вторая функция - «showUser». В чем смысл анонимной, самоисполняющейся функции? Вы не объявляете никаких переменных в нем, поэтому это не может быть закрытием. – Quentin

+0

У вас есть неуравновешенный '(' и не хватает ';', поэтому это приведет к синтаксической ошибке. – Quentin

+0

@Quentin: «... Я хочу выполнить две отдельные функции», вот что это делает. И из того, что я узнал закрытие - это самоисполняемый бит кода (например, внутри функции самоисполнения). Извините, если я неправильно понял. И я также исправлю синтаксис, спасибо за указание на это. –

7

Вы не можете выполнять две функции одновременно. JavaScript в веб-браузере однопоточный.

Код, который у вас есть, будет выполнять функции последовательно, при условии, что первый не выдаст исключение и не завершит выполнение.

Если это порождает исключение, вы должны попытаться решить это. В качестве грубой силы взломать:

try { 
    check_update('personal_details') ; 
} catch (e) { 
    alert("Oh no! An exception! " + e); 
} 
showUser(2); 

... но предотвращение ошибки в первую очередь, очевидно, лучшее решение!

3

У вас вопрос, отмеченный как jQuery, поэтому я собираюсь предположить, что вы его используете. В этом случае вы не должны использовать атрибут onclick. Это был бы правильный способ написать код с точки зрения jQuery:

<div id="yourId">Click me</div> 

<script type="text/javascript"> 
$('#yourId').click(function(e) { 
    e.preventDefault(); 
    check_update('personal_details'); 
    showUser(2); 
}); 
</script> 
Смежные вопросы