Як викликати функцію JavaScript замість href в HTML


86

У мене є макет в HTML

<a href="javascript:ShowOld(2367,146986,2)"><img title="next page" alt="next page" src="/themes/me/img/arrn.png"></a>

Я отримав відповідь від сервера, коли надіслав запит.

За допомогою цього макету я отримав у відповідь на запит AJAX, який надсилає мій код на сервер.

Ну, все добре, але коли я натискаю на посилання, браузер хоче відкрити функцію як посилання; означає після натискання я бачу адресний рядок як

javascript:ShowOld(2367,146986,2)

означає річ браузера, яка є url, якщо я хочу зробити це у firebug, що працює. Тепер я хочу це зробити, тоді коли хтось натискає посилання, тоді браузер намагається викликати функцію, вже завантажену в DOM, замість того, щоб намагатися відкрити їх у браузері.


На подібне питання відповідає сам Stackoverflow. stackoverflow.com/questions/1070760 / ...
Scaria Себастьяну

Відповіді:


192

Цей синтаксис повинен працювати нормально, але ви можете спробувати цю альтернативу.

<a href="javascript:void(0);" onclick="ShowOld(2367,146986,2);">

або

<a href="javascript:ShowOld(2367, 146986, 2);">

ОНОВЛЕНИЙ ВІДПОВІДЬ НА РЯДНІ ЦІННОСТІ

Якщо ви передаєте рядки, використовуйте одинарні лапки для параметрів вашої функції

<a href="javascript:ShowOld('foo', 146986, 'bar');">

Як передати рядок, що уникає подвійних лапок в аргументах? H = Приклад містить лише цілі числа.
jeffry copps

1
@jeffrycopps спробуйте одинарні лапки всередині вашої функції
ineedme

Відповідь @ineedme Оновлено з цією інформацією. Дякую.
Dutchie432

9

Якщо у вас є лише "обробник подій клацання", використовуйте <button>замість. Посилання має конкретне семантичне значення.

Наприклад:

<button onclick="ShowOld(2367,146986,2)">
    <img title="next page" alt="next page" src="/themes/me/img/arrn.png">
</button>

Чи є спосіб зробити так, щоб кнопка виглядала як посилання замість кнопки?
Ben Page

@Ben Page: Так, із CSS. Принаймні ви отримуєте хорошу апроксимацію. Дивіться мою відповідь та коментарі тут: stackoverflow.com/questions/4842953/or-javascriptvoid0/…
Фелікс Клінг

7

Спробуйте зробити свій javascript ненав’язливим:

  • ви повинні використовувати справжнє посилання в атрибуті href
  • і додати слухача при події клацання для обробки ajax

hrefє необов’язковим, просто пропустіть його.
Колін Харт

Мітка - це якір; це не повинно мати посилання.
Колін Харт

5

Я використовую невеликий CSS на інтервалі, щоб виглядати як посилання приблизно так:

CSS:

.link {
    color:blue;
    text-decoration:underline;
    cursor:pointer;
}

HTML:

<span class="link" onclick="javascript:showWindow('url');">Click Me</span>

JAVASCRIPT:

function showWindow(url) {
    window.open(url, "_blank", "directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes");
}

Вищезазначений параметр функції 'url' дає мені рядок "url" замість фактичної url
visrahane 02.03.18

Ви повинні розмістити фактичну URL-адресу у функції showWindow. Наприклад: javascript: showWindow ('stackoverflow.com ' );
tolsen64

Я не можу твердо
кодувати

3

Ви також повинні відокремити javascript від HTML.
HTML:

<a href="#" id="function-click"><img title="next page" alt="next page" src="/themes/me/img/arrn.png"></a>

javascript:

myLink = document.getElementById('function-click');
myLink.onclick = ShowOld(2367,146986,2);

Просто переконайтеся, що останній рядок у функції ShowOld:

return false;

оскільки це зупинить відкриття посилання у браузері.


hrefє необов’язковим, просто пропустіть його.
Колін Харт

3

<a href="#" onclick="javascript:ShowOld(2367,146986,2)">


8
Не найкраще рішення, оскільки це призведе до початку сторінки.
Алекс Маршалл,

Для href замість #використанняhref="javascript:void(0)
Narayan

hrefє необов’язковим, просто пропустіть його.
Колін Харт

1

hrefнеобов’язковий для aелементів.

Цього цілком достатньо для використання

<a onclick="ShowOld(2367,146986,2)">link text</a>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.