2011-12-30 3 views
4

У меня есть несколько простых JavaScript функций:Javascript не выполняется OnClick событие

function focus(id) 
{ 
    var e = document.getElementById(id); 
    if (e != null) 
    { 
     e.focus(); 
    } 
} 

function show(id) 
{ 
    var e = document.getElementById(id); 
    if (e != null) 
    { 
     e.style.display = "inline"; 
    } 
} 

Я тогда HTML-тег с событием OnClick.

<a title="Click This" onclick="focus('some_textbox'); show('some_panel');">Click This</a> 

Когда я нажимаю на ссылку «Нажмите эту ссылку», выполняется только метод show(). По какой-то причине метод фокусировки никогда не называется. Есть идеи, почему это происходит?

Я пробовал очистить свой кеш и изменил порядок методов focus() и show(). Я также проверил, что все написано правильно.

Это потому, что focus() уже является функцией внутри javascript?

Редактировать: Я попытался переименовать функцию в focus2, и теперь она работает. Очень странно. Кто-нибудь знает, почему это происходит?

+1

Если 'show' выполняется,' focus' как хорошо, может быть, вы не можете увидеть эффект, может быть, это не функция вы определили, но выполняется. –

+0

попробуйте переименовать функцию 'focus', посмотрите, работает ли это –

+0

@FelixKling: ее не выполняли. И спасибо за полное игнорирование моего сообщения. – Mark

ответ

0

Похоже, у вас есть проблема переименования.

Просто переименуйте функцию focus в focusX или что-то другое, это работает для меня в моем тестовом примере.

Не забудьте обновить вызов focus в HREF, чтобы focusX

+0

Отметится как правильно, когда истечет таймер. Любые идеи для нового имени; подчеркнуть, привязать курсор? Я не могу думать о хорошем. – Mark

+0

@Mark FocusElement не хуже любого :) –

3

Вероятно, является, называющим метод «фокус», но то, что происходит, - это то, что действие по умолчанию тега крадет его обратно. Попробуйте это:

function focus(id) 
{ 
    var e = document.getElementById(id); 
    if (e != null) 
    { 
     setTimeout(function() { e.focus(); }, 1); 
    } 
} 

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

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