JavaScript 'onclick' event 'return' функциональность ключевого слова
Я действительно новичок в javascript, и наткнулся на ключевое слово return
. Какова разница между этими двумя утверждениями?
<input type="checkbox" onclick="doAlert()" />
против
<input type="checkbox" onclick="return doAlert();" />
По сути, оба возвращали одинаковые результаты и вызывали функцию, но есть ли что-то еще? Любая помощь с благодарностью :). Спасибо!
Ответы
Ответ 1
Возврат false из функции отменяет эффект проверки. Поскольку нативный из функций, написанных жестко закодированными в свойствах html (он стал некоторой новой локальной функцией), запись html без слова "return" просто запустит функцию и потеряет возвращаемое значение, как если бы вы написали:
function doAlert() {
if(some_condition)
return false;
else
return true;
}
function some_local_function() {
doAlert();
}
Функция some_local_function
не вернет никакого значения, хотя возвращает doAlert
.
Когда вы пишете "return", это похоже на то, что вы написали вторую функцию следующим образом:
function some_local_function() {
return doAlert();
}
который сохраняет возвращаемое значение doAlert, каким бы оно ни было. Если это правда - действие будет выполнено (флажок будет проверен) - в противном случае - он отменяется.
Здесь вы можете увидеть live expamle: http://jsfiddle.net/RaBfM/1/
Ответ 2
Некоторые элементы html имеют события JS, которые ведут себя по-разному, когда возвращается значение true/false. Например:
<input type='submit' value='Click Me' onSubmit='ValidateForm();'>
... против...
<input type='submit' value='Click Me' onSubmit='return ValidateForm();'>
Во втором случае, если функция ValidateForm
вернула false, форма не будет отправлена, в первом случае, даже если функция вернет false, форма все равно будет отправлена.
Я думаю, что в этом сценарии вы можете увидеть разницу между использованием ключевого слова return
и не.
ОБНОВЛЕНО Для упрощения, если вы используете ключевое слово return
вы передаете значение обратно в функцию, onsubmit
. Без этого вы просто вызываете функцию, которую вы называете в обработчике событий, и ничего не возвращаете.
Ответ 3
добавив return
к функции(), он отключает поведение браузера по умолчанию, отключает задание на submit
. Это означает, что он будет держать вас на той же странице, если функция вернет false, и вы можете снова ввести значение в поле.
Если вы не используете return
с функцией(), то функция submit
выполнит свою работу, она будет перенаправлена на следующую указанную страницу, не заботясь о возвращенном результате, независимо от того, было ли оно истинным или ложным.