VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Использование метода getElementsByClassName в цикле [JavaScript]
0
Есть вот такой код, который изменяет размер поля textarea в зависимости от объёма введенных данных:
Code:
<style>
.resize_textarea{
height: 100%;
position: absolute;
}
.resize{
position: relative;
width: auto;
height: auto;
white-space: pre-wrap;
word-wrap: break-word;
}
</style>
<div class="resize"><textarea class="resize_textarea"></textarea></div>
<script>
(function() {
var d = document,
c = d.getElementsByTagName('div')[0],
t = d.getElementsByTagName('textarea')[0],
f = d.createTextNode('');
c.appendChild(f);
function updateSize() {
f.nodeValue = t.value + '\n\n';
}
t.onkeypress = t.onkeyup = t.onchange = updateSize;
updateSize();
})();
</script>
Проблема в том, что используется только первый встречающийся тег textarea, который находится внутри тега div. Это видно по вот этим участкам кода:
Code:
getElementsByTagName('div')[0]
и
Code:
getElementsByTagName('textarea')[0]
Хочу сделать так, чтобы этот скрипт работал с абсолютно всеми полями textarea с присвоенным классом "resize_textarea" которые есть в коде страницы. Знаю что для этого нужно использовать метод getelementsbyclassname, и в цикле перебирать все элементы, но справиться к сожалению не получаеться.
Знаю что для этого нужно использовать метод getelementsbyclassname, и в цикле перебирать все элементы, но справиться к сожалению не получаеться.
И не получится. Метод не кроссбраузерный и поддержан не всеми браузерами. Бери все textarea и проверяй свойство ClassName.
Code:
var textareas = document.getElementsByTagName('textarea');
for(var i = 0;i < textareas.length;i++){
if(textareas[i].ClassName == 'resize_textarea'){
твой код тут
}
}
Причем советую использовать расширенный алгоритм для проверки на наличие класса. Так как в свойстве ClassName может быть строка из нескольких классов.
kerk
k0t
Join Date: May 2005
Location: localhost
Posts: 28,715
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 20257
Репутация в разделе: 8432
1
можно использовать для поиска нужного класса готовые функции библиотеки YUI
не могу привести конкретную фонкцию, но точно знаю, что есть и сам пользовался пару раз
это не конкретно поиск класса, там идет замена одного на другой или удаление класса у элемента или установка класса для элемента