Почему выделение срабатывает только на 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>
|
Потому что вот это
var input = document.getElementsByTagName('input')[0];
Выбирает первый элемент (индекс [0]) с тэгом input. А вообще долой изврат! Надо - так : http://jsfiddle.net/4ndcK/ |
Спасибо))
У меня стоит задание "именно на JavaScript". Решил проблему продублировав функцию с дописанием двойки -> 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/ |
При объявлении переменных всегда нужно использовать ключевое слово 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>
|
| Часовой пояс GMT +3, время: 02:51. |