вызовите функцию JavaScript при щелчке гиперссылки

Почему Вы не хотите к литералам строки префиксов с L? Это довольно просто - представляет в виде строки без L, строки ANSI (const char*), строки с L являются строками широкого символа (const wchar_t*). Существует TEXT() макрос, который превращает строковый литерал в ANSI, или строка широкого символа в зависимости от текущего проекта установлена использовать Некод:


#ifdef UNICODE
#define TEXT(s) L ## s
#else
#define TEXT(s) s
#endif

существует также _T() макрос, который эквивалентен TEXT().

82
задан RedBlueThing 17 June 2011 в 06:43
поделиться

7 ответов

Еще аккуратнее, вместо типичного href = "#" или href = "javascript: void" или href = "что угодно ", я думаю, это имеет гораздо больший смысл:

var el = document.getElementById('foo');
el.onclick = showFoo;


function showFoo() {
  alert('I am foo!');
  return false;
}

<a href="no-javascript.html" title="Get some foo!" id="foo">Show me some foo</a>

Если Javascript дает сбой, есть некоторая обратная связь. Кроме того, устранено ошибочное поведение (переходы по страницам в случае href = "#" , посещение той же страницы в случае href = "" ).

128
ответ дан 24 November 2019 в 09:04
поделиться

Ответ JQuery. Поскольку JavaScript был изобретен для разработки JQuery, я даю вам пример в JQuery, который делает это:

<div class="menu">
    <a href="http://example.org">Example</a>
    <a href="http://foobar.com">Foobar.com</a>
</div>

<script>
jQuery( 'div.menu a' )
    .click(function() {
        do_the_click( this.href );
        return false;
    });

// play the funky music white boy
function do_the_click( url )
{
    alert( url );
}
</script>
12
ответ дан 24 November 2019 в 09:04
поделиться

С параметром onclick ...

<a href='http://www.google.com' onclick='myJavaScriptFunction();'>mylink</a>
26
ответ дан 24 November 2019 в 09:04
поделиться

Я бы обычно рекомендовал использовать element.attachEvent (IE) или element.addEventListener (другие браузеры) вместо установки события onclick напрямую, поскольку последнее заменит любые существующие обработчики событий для этого элемента.

attachEvent / addEventListening позволяет создавать несколько обработчиков событий.

2
ответ дан 24 November 2019 в 09:04
поделиться

В идеале я бы вообще избегал создания ссылок в вашем коде, так как ваш код будет нуждаться в перекомпиляции каждый раз, когда вы захотите внести изменения в «разметку» каждой из этих ссылок. Если бы вам пришлось это сделать, я бы не встраивал ваши «вызовы» javascript в ваш HTML, это вообще плохая практика, ваша разметка должна описывать ваш документ, а не то, что он делает, это работа вашего javascript.

Используйте подход, в котором у вас есть определенный идентификатор для каждого элемента (или класса, если его общая функциональность), а затем используйте Progressive Enhancement, чтобы добавить обработчик (-ы) событий, например:

[c# example only probably not the way you're writing out your js]
Response.Write("<a href=\"/link/for/javascriptDisabled/Browsers.aspx\" id=\"uxAncMyLink\">My Link</a>");

[Javascript]  
document.getElementById('uxAncMyLink').onclick = function(e){

// do some stuff here

    return false;
    }

Таким образом, ваш код не сломается для пользователей с отключенным JS и у него будет четкое разделение проблем.

Надеюсь, что это будет полезно.

3
ответ дан 24 November 2019 в 09:04
поделиться

Я предпочитаю использовать метод onclick, а не href для гиперссылок javascript. И всегда используйте предупреждения, чтобы определить, какое у вас значение.

Link

Это могло также использоваться в тегах ввода, например.

4
ответ дан 24 November 2019 в 09:04
поделиться

Используйте HTML-атрибут onclick .

Обработчик событий onclick фиксирует событие щелчка мышью пользователя кнопка на элементе, к которому Применен атрибут onclick . Эта действие обычно приводит к вызову метод сценария, такой как JavaScript function [...]

1
ответ дан 24 November 2019 в 09:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: