2013-06-27 2 views
0

Я пытаюсь получить ссылку в html для выполнения двух разных скриптов javascript. Возможно, я мог бы переписать оба сценария в один, но у меня такое чувство, что эта проблема снова возникнет с более сложным сценарием, и это не будет вариантом.Можно ли сделать ссылку в HTML, выполнить два сценария?

Я пытаюсь получить ссылку, как скрыть, так и показать <div> и изменить текст ссылки с «скрыть» на «показать» и наоборот.

Вот некоторые из моих фрагментов кода:

Javascript

function hide(object) 
{ 
if (object.style.display=="block") 
    object.style.display="none" 
else 
    object.style.display="block" 
} 

function menuChange(object) 
{ 
if (object.innerHTML=="hide") 
    object.innerHTML="show" 
else 
    object.innerHTML="hide" 
} 

Я хочу, чтобы оба из них, чтобы выполнить при

<a id="button">hide</a> 

нажимается.

Есть ли способ сделать это, не прибегая к объединению обоих сценариев?

+1

Как 'onclick = 'hide (this); menuchange (this);" '? – Ian

ответ

9

сделать 3-ю функцию:

function doBoth(object) { 
    hide(object); 
    menuChange(object); 
} 

Я обычно делают одну функцию для каждого элемента или группы элементов, и называют его buttonOnClick(), который вызывает только одну или несколько функций, которые делают свою работу.

+1

Хорошо отделить концепцию функций, выполняющих определенную задачу, от функций, которые являются только обработчиками событий. +1. – Johnny5

+0

Это работает. Итак, невозможно ли сделать два атрибута 'href' в ссылке или что-то подобное? – qaxf6auux

+0

@ Snip3r да. вы не можете иметь повторяющиеся атрибуты (ну, вы можете, но один из них будет проигнорирован). В html5 есть тег 'source', который позволяет использовать несколько источников (например, для видеопотоков), но не похоже, что это поможет вам здесь. – sgroves

0

Вариант Stenci будет хорошо работать в вашем случае. Вы также можете принять необязательный параметр в первой функции, а затем выполнить условную операцию над этим параметром, чтобы вызвать вторую функцию из первой функции.

+0

вы могли бы, я думаю, но нет веских оснований для этого в этом примере – sgroves

Смежные вопросы