Вызвать функцию javascript на гиперссылке

Я динамически создаю гиперссылку в коде С# за файлом ASP.NET. Мне нужно вызвать функцию JavaScript при клике. как это сделать?

Ответ 1

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

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="").

Ответ 2

Самый простой ответ - это...

<a href="javascript:alert('You clicked!')">My link</a>

Ответ 3

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

<a href='http://www.google.com' onclick='myJavaScriptFunction();'>mylink</a>

Ответ 4

Ответ 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>

Ответ 5

В идеале я бы избегал генерации ссылок в вашем коде, потому что ваш код будет нуждаться в перекомпиляции каждый раз, когда вы хотите внести изменения в "разметку" каждой из этих ссылок. Если вам нужно это сделать, я бы не вставлял ваши вызовы 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, и у него будет четкое разделение проблем.

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

Ответ 6

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

<a href='#' onclick='jsFunction();alert('it works!');'>Link</a>

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

<input type='button' value='Submit' onclick='jsFunction();alert('it works!');'>

Ответ 7

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

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

Ответ 8

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

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

Ответ 9

Если вы не дождались загрузки страницы, вы не сможете выбрать элемент по id. Это решение должно работать для тех, у кого возникли проблемы с выполнением кода

<script type="text/javascript">
window.onload = function() {
    document.getElementById("delete").onclick = function() {myFunction()};

    function myFunction() {
        //your code goes here
        alert('Alert message here');
    }
};
</script>

<a href='#' id='delete'>Delete Document</a>