Javascript onclick - PullRequest
       1

Javascript onclick

1 голос
/ 14 сентября 2011

У меня есть код, подобный

<a id='lnk1' onclick='do something' >test</a>

Позже код добавляется к тому же тегу привязки, как

lnk = document.getElementById('lnk1')
lnk.onclick = function() { do something}

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

Ответы [ 4 ]

3 голосов
/ 14 сентября 2011

Существует очень простой, соответствующий стандартам способ:

lnk1.addEventListener('click', function() {
    // do something
});

Это не работает в IE до версии 9, поэтому вам нужно сделать следующее:

var handler = function() {
    // do something
};

if ("addEventListener" in lnk1) { // standards-compliant browsers
    lnk1.addEventListener('click', handler);
} else { // Internet Explorer < v9
    lnk1.attachEvent('onclick', handler);
}

Это будет работать, и будет работать как исходная функция, указанная в атрибуте HTML, так и в приведенном выше коде ОДНАКО было бы гораздо лучше определить все ваши обработчики событий в одном месте: в JavaScript. Подумайте об удалении логики обработки событий из ваших атрибутов HTML.

3 голосов
/ 14 сентября 2011

Вы можете попробовать это:

var lnk = document.getElementById('lnk1'); // don't forget var!

var oldHandler = lnk.onclick;
lnk.onclick = function(ev) {
  if (oldHandler) oldHandler(ev);
  // do something ...
};

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

Вы могли бы передать вызов старому обработчику после нового кода или смешанного, или чего-то еще.

1 голос
/ 14 сентября 2011
<a id='lnk1' onclick='do something' >test</a>

JavaScript

 lnk1 = document.getElementById('lnk1')
    lnk1.addEventListener('click',function() { do something}, false);

при настройке onclick вы перезаписываете существующий атрибут, но назначаете щелчок через прослушиватель событий, тогда все будет хорошо.

0 голосов
/ 14 сентября 2011

Вы ошиблись в своем утверждении:

JAVASCRIPT

lnk = document.getElementById('lnk1')
lnk1.onclick = function() { do something} \\ replace lnk1 with lnk
lnk.onclick = function() { do something} \\ this will work

Вы определили lnk как переменную, но вы звоните lnk1 с помощью onclick событие.Это неверное утверждение.

ИСПОЛЬЗОВАТЬ HTML

<a id='lnk1'>test</a>

См. Демонстрацию: http://jsfiddle.net/tm5cX/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...