2013-06-24 5 views
6

Каков способ создания графического компонента (точнее, значка twitter.bootstrap) на веб-сайте html, вызывающего java-скрипт.Правильный способ запуска javascript из html

Можно было либо сделать кнопку, либо поставить на нее значок, но это не выглядит красиво ИМХО. Или можно использовать тег HREF,

<a href="#" name="ad_fav" onclick= CALLFUNCTION> <i 
         class="icon"></i></a> 

Но что является самым чистым способом достижения этой цели? Было бы неплохо, если бы значок мог измениться после его нажатия.

Как это реализовано, например, кнопка upvote в stackoverflow?

+0

наблюдателей событий – epoch

+0

переполнение стека реализовали его с якорной элементом стилизованной над CSS (фоновое изображение) с классами «вотум-вверх-офф» и «голосование вверх-на», где позже добавляются в JavaScript функция. –

+0

Вы можете увидеть, как кнопки SO реализуются щелчком правой кнопки мыши и выбором «Осмотреть элемент» (или эквивалент вашего браузера). – nnnnnn

ответ

4

Другой способ:

function myFunc() { 
// code here 
} 

var element = document.getElementsByClassName("icon"); 
element[0].addEventListener("click", myFunc); 
+2

+1; это ** является ** самым чистым способом, без смешивания js с html! –

+3

Нет метода 'getElementByClassName()'. Там _is_ a 'getElementsByClassName()' (обратите внимание на множественное число «s» в «Элементы»). – nnnnnn

+1

@nnnnnn, вы были абсолютно правы :) – Stefan

1

Просто сделать HREF в < > быть 'JavaScript:', пример:

<a href="javascript:alert('hello there! this works!')" name="ad_fav"> <i 
        class="icon"></i></a> 

Заменить оповещения (...) с вызовом функции, если вам нужно

1

Вы не есть ли обернуть его с элементом анкерного:

<img src="[path to twitter.bootstrap icon]" onclick="yourJavaScriptFunction" /> 
0

Почему бы вам не использовать jquery для функции?

$(document).on("click", "a.icon", function (e) { 
    e.preventDefault(); 
});