Может кто-то, пожалуйста, помогите мне с этим javascript: void (null) Я нашел, что он используется в кнопках со ссылками следующим образом
<a onclick="ProcessResponse()" href="javascript:void(null)" >Accept Data</a>
Может кто-то, пожалуйста, помогите мне с этим javascript: void (null) Я нашел, что он используется в кнопках со ссылками следующим образом
<a onclick="ProcessResponse()" href="javascript:void(null)" >Accept Data</a>
В основном происходит то, что onclick
вызывается функция ProcessResponse()
, а для параметра href
установлено значение javascript:void(null)
, чтобы отключить поведение по умолчанию.
Большинство разработчиков просто используются для написания этого:
<a onclick="ProcessResponse(); return false;" href="#" >Accept Data</a>
Пример:
Предположим, что у нас есть эта ссылка:
<a onclick="ProcessResponse(); return false;" href="http://www.google.com" >Accept Data</a>
Обратите внимание, что href
установлен на www.google.com
, но когда вы на самом деле нажимаете на эту ссылку, он просто вызывает функцию ProcessResponse()
и не переходит к www.google.com
, потому что return false
помещается после ProcessResponse()
отключает поведение по умолчанию для ссылки, которая будет www.google.com
. То же самое касается ссылки, которую вы опубликовали.
void
является оператором JavaScript, но иногда он ошибочно принимается за функцию из-за общего использования скобок, которые следуют за ним. Цель void
- оценить выражение без возврата значения. Следовательно, любое выражение вообще может быть void
ed, оно не должно быть null
и нередко вы видите void(0)
или реже, void 0
.
Когда вы используете javascript:
в атрибуте href
, следующее выражение будет оценено и его результат будет возвращен. Это можно увидеть, введя следующее в адресное окно вашего браузера:
javascript:prompt("test");
Введите что-нибудь в появившемся окне и нажмите enter/щелкните ok. Вы заметите, что страница исчезнет, и все, что вы набрали, появится. Теперь посмотрим, что произойдет, если мы добавим void 0;
:
javascript:prompt("test"); void 0;
После нажатия кнопки "ОК" в приглашении ничего не происходит. Это void 0
handywork, оно возвращает undefined
, и поэтому браузер ничего не делает. Это также относится к href
в ссылках (не стесняйтесь попробовать). Все это можно было бы просто написать как javascript:void prompt("test");
.
Как уже упоминалось, лучше использовать return false;
из обработчика событий, а не использовать void
в href. На самом деле, рекомендуется не использовать javascript:
в атрибуте href
вообще.
javascript:void(null)
= ничего не делать.
Обратите внимание, что в обработчике событий onclick есть javascript-вызов - что-то делает (я предполагаю, что он принимает данные, обрабатывая ответ;).
Добавление команд void(0)
в javascript - это общий трюк, когда вы используете псевдо-URL javascript:
для запуска кода. Если вы опустите это, а script возвращает что-то, отличное от undefined, оно будет обработано так, как если бы оно было передано в document.write
, то есть браузер переместится на пустую страницу.
Есть допустимые приложения для этого трюка (а именно, букмарклеты всегда должны заканчиваться так), но в примере, который вы ему дали, просто неправильно, по причинам, уже объясненным другими.