Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.05.2014, 10:54
Новичок на форуме
Отправить личное сообщение для Erlotaza Посмотреть профиль Найти все сообщения от Erlotaza
 
Регистрация: 08.05.2014
Сообщений: 3

Почему выделение срабатывает только на 1-ом input?
Почему выделение срабатывает только на 1-ом <input>? - ведь второй ничем не отличается.
Заранее благодарен.
скриншот:

<html>
<body>
		<style>
		.highlight { background: #FA6; }
		</style>

		
<p>Логин</p>
				<input>
<p>Пароль</p>
				<input>
	<script>
		var input = document.getElementsByTagName('input')[0];
						 
			input.onfocus = function() {
				this.className = 'highlight';
			}
						 
			input.onblur = function() {
				this.className = '';
			}
	</script>
	
	
</body>				
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 08.05.2014, 11:24
Профессор
Отправить личное сообщение для alex.vv Посмотреть профиль Найти все сообщения от alex.vv
 
Регистрация: 15.04.2014
Сообщений: 176

Потому что вот это
var input = document.getElementsByTagName('input')[0];

Выбирает первый элемент (индекс [0]) с тэгом input.

А вообще долой изврат!
Надо - так : http://jsfiddle.net/4ndcK/
Ответить с цитированием
  #3 (permalink)  
Старый 08.05.2014, 12:51
Новичок на форуме
Отправить личное сообщение для Erlotaza Посмотреть профиль Найти все сообщения от Erlotaza
 
Регистрация: 08.05.2014
Сообщений: 3

Спасибо))
У меня стоит задание "именно на JavaScript".
Решил проблему продублировав функцию с дописанием двойки -> input2.
Или можно как то практичнее организовать? (без копирования множества строк)
Ответить с цитированием
  #4 (permalink)  
Старый 09.05.2014, 20:46
Профессор
Отправить личное сообщение для alex.vv Посмотреть профиль Найти все сообщения от alex.vv
 
Регистрация: 15.04.2014
Сообщений: 176

Это кто ж такие задания ставит?))

Цитата:
Решил проблему продублировав функцию с дописанием двойки -> input2.
Мсье знает толк!)

Цитата:
Или можно как то практичнее организовать? (без копирования множества строк)
Есть такое подозрение.

inputs = document.getElementsByTagName('input');
for (input in inputs) {
	if (parseInt(input).toString() == 'NaN') continue;
	inputs[input].onfocus = function() {this.className = 'highlight';};
	inputs[input].onblur = function() {this.className = '';};
}


http://jsfiddle.net/nU2xT/
Ответить с цитированием
  #5 (permalink)  
Старый 10.05.2014, 09:47
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

При объявлении переменных всегда нужно использовать ключевое слово var, ибо иначе переменная объявляется в глобальной области видимости и засоряет ее, тем самым. Не, ну тут и так в глобальной области видимости объявление будет, но надо привыкать писать правильно.
И еще - к чему эти трюки с for in? Вообще-то, оно делается так:
<html>
<body>
<style>
.highlight { background: #FA6; }
</style>
<p>Логин</p>
<input>
<p>Пароль</p>
<input>
<script>
var inputs = document.getElementsByTagName('input');

for (var i = 0; i < inputs.length; i++) {
	inputs[i].onfocus = function() {this.className = 'highlight';};
	inputs[i].onblur = function() {this.className = '';};
}
</script>   
</body>              
</html>

Последний раз редактировалось Erolast, 10.05.2014 в 09:50.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему данный скрипт работает только в IE? hacker_007 Общие вопросы Javascript 4 08.09.2011 16:58
Opera не выполняет style.fontSize=... в поле input Маэстро Opera, Safari и др. 6 20.06.2011 12:03
Почему функция срабатывает один раз? Bogdan808 Javascript под браузер 4 06.09.2010 23:41
Почему скрипт срабатывает только после обновления страницы? Randomizer jQuery 2 01.09.2010 19:01
загрузка данных из XML, почему загружает только в Explorer asked86 AJAX и COMET 2 18.12.2009 16:29