Изменение с <a href="javascript: DoSomething(this);">Click!</a>
на <a href="#" onclick="doSomething(this)">
работает.
this
имеет смысл только в функциях JavaScript. Обработчики событий типа onclick
являются своего рода функцией.
javascript: псевдо-URL не являются функциями. Они не выполняются в контексте какого-либо объекта на странице. Они просто строка. Нажатие на ссылку аналогично вводу этой строки в адресную строку веб-браузера. Следовательно, this
даст значение по умолчанию window
, глобальный объект, который всегда передается, когда нет конкретного this
объекта.
javascript: псевдо-URL-адреса являются полной катастрофой и никогда не должны использоваться ни для чего (ну, кроме букмарклетов). Форма onclick
лучше, но вы должны не забыть добавить return false;
, чтобы она не переходила по ссылке #
и не переходила в верхнюю часть страницы.
(Элемент без ссылки с помощью onclick или стилизованная кнопка может быть более подходящим, чем ссылка, в зависимости от того, что делает SomeSone, что делает DoSomething.)