2009-08-12 5 views
0

В настоящее время я настраиваю свои логины и пароли на веб-странице. Они работают, как предполагалось в Firefox/Safari, но Internet Explorer выдает следующее сообщение об ошибке:JavaScript не работает в Internet Explorer

Линия: 7, Char: 2, возражали требуется

Это происходит, когда я даю внимание на мои входы. Эта функция называется OnFocus:

function InputFocused(InputID) 
{ 
    var InputObject = document.getElementById(InputID); 
    DefaultValue = InputObject.value; 
    InputObject.value = ""; 
    InputObject.style.color = "#000"; 
} 

И это разметка:

<input type="text" class="login" id="username" value="USERNAME" onfocus="InputFocused(this.id)" onblur="InputBlurred(this.id)" /> 

Я думал, что это было довольно просто, но у меня очень мало опыта работы с JavaScript, так что любое понимание будут оценены.

+0

Отправьте код, который вы используете, чтобы подключить функцию 'onfocus' к этой функции. –

ответ

3

Я думаю, что вам лучше всего было бы сделать это

function InputFocused(DOM_OBJECT) 
    { 
     DefaultValue = DOM_OBJECT.value; 
     DOM_OBJECT.value = ""; 
     DOM_OBJECT.style.color = "#000"; 
    } 

В то время как ваш HTML будет выглядеть следующим образом:

<input type="text" class="login" "id="username" value="USERNAME" onfocus="InputFocused(this)" onblur="InputBlurred(this)" /> 

Это будет передавать весь объект DOM, а не просто прохождения Я бы.

Надеюсь, это поможет!

+0

Хотя это помогает сделать код более кратким, он не решает проблему, с которой я столкнулся. Спасибо за подсказку, хотя, я реализовал предложение –

+0

Фактически это исправить проблему IE, я просто забыл очистить кеш, прежде чем снова проверить страницу. Спасибо. Любая идея, почему передача this.id выкидывает ошибку, но передает ссылка на объект не была проблемой? –

+0

Я не уверен, почему. Я играл с вашим кодом и поддерживал обе версии. –

1

Я думаю, что это

<input type="text" class="login" "id="username" value="USERNAME" onfocus="InputFocused(this.id)" onblur="InputBlurred(this.id)" /> 

должны были бы быть в этом

<input type="text" class="login" id="username" value="USERNAME" onfocus="InputFocused('username')" onblur="InputBlurred('username')" /> 

для примера, приведенного.

+0

У меня создалось впечатление, что оба они были точно такими же. Не так ли? Кроме того, неуместно ». –

+0

Неверные цитаты могут привести к значительным зависаниям. Всегда используйте валидатор. – Quentin

+0

Неуместная цитата не была в моем действительном коде, просто в фрагменте, который я вставил здесь. Мой вопрос касался этого и« имени пользователя ». –

2

Возможно, вы захотите добавить проверку на работоспособность на alert при значении InputID. Проблема с вашим html ("id= вместо id=), но это может быть просто результатом быстрой копирования/вставки.

Также: Я замечаю, что вы передаете значение атрибута id, а затем просматриваете элемент, а не просто передаете ссылку на элемент напрямую.

+0

Первое, что было на самом деле, это просто моя ошибка вставки. И теперь я передаю ссылку вместо ID, я вижу, как это делает вещи более краткими. Спасибо. –

0

Какую версию IE вы используете?

Проблема, я ожидаю, заключается в том, что когда вы указываете onfocus = "InputFocused (this.id)" Я не уверен, что IE знает, что такое текущий контекст, и, как предполагалось, я бы сказал, потому что DOM не закончил строительство.

По пути решения и объяснения вы можете acheieve то, что вы пытаетесь сделать так:

HTML:

<input type="text" class="login" id="username" value="USERNAME"/> 

Тогда в вашем JavaScript вы можете указать и установить обработчики событий:

JAVASCRIPT:

 //get the element... 
    var txtUsrNm = document.getElementById('username'); 

    //specify the event handler for focus 
    txtUsrNm.onfocus = function(){ 
     this.value = ""; 
     this.style.color = "#000"; 
    } 

//specify the event handler for blur 
    txtUsrNm.onblur = function(){ 
     this.style.color = "#f00"; 
    } 

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

+0

Я использую IE7, и теперь передаю ссылку на объект в моя JS-функция вместо простого ID, поэтому это не должно быть проблемой контекста. –

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