Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
 Аватар для Heleg
209 / 209 / 6
Регистрация: 23.10.2011
Сообщений: 971

другой вариант функции

24.12.2012, 15:41. Показов 964. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
function elements_by_id(elements) {
    /*
        elements = {
            'variable':'element_id'
        }
    */
 
    for(var variable in elements) {
        eval(variable + '= document.getElementById("'+ elements[variable]+'")');
    }
 
}
функция присваивает переменным dom элементы, выбирая их по id. кто нибудь может предложить другой вариант функции?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.12.2012, 15:41
Ответы с готовыми решениями:

Другой вариант решения
Задание: Выяснить, входят ли во введенный текст буквы A, В, С (с учетом верхнего/нижнего регистров). На Си. Я вот намудрила такую...

Другой вариант решения
Всем здравствуйте,не так давно начал изучать питон. И вот решил узнать как можно решить задачу по другому. Суть задачи: Пользователь...

Оптимизация/Другой вариант программы
Имею вот такой код программы(работа с бинарной строкой) однако на моменте проверки что это строка бинарная возникли проблемы (не понимаю...

12
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
24.12.2012, 16:06
JavaScript
1
2
3
4
5
6
7
function elements_by_id(elements) {
    var result = {};
    for (var i = 0, L = elements.length; i < L; i++)
        result[elements[i]] = document.getElementById(elements[i]);
 
    return result;
};
0
 Аватар для Heleg
209 / 209 / 6
Регистрация: 23.10.2011
Сообщений: 971
24.12.2012, 16:26  [ТС]
Vovan-VE, но тут возвращается список переменных, а не присваивается переменным, которые есть в списке. или так практичней?
0
Эксперт функциональных языков программированияЭксперт по математике/физике
4313 / 2105 / 431
Регистрация: 19.07.2009
Сообщений: 3,204
Записей в блоге: 24
24.12.2012, 17:03
JavaScript
1
2
3
4
5
6
7
8
9
10
function elements_by_id(elements) {
 
    for(var variable in elements) {
        this[variable] = document.getElementById(elements[variable]);
    }
 
}
 
var scope = new elements_by_id({a:id_A,b:id_B});
// use: scope.a, scope.b
Гибрид ваших версий.
0
Просто любитель
 Аватар для GuardCat
626 / 464 / 120
Регистрация: 20.01.2011
Сообщений: 865
Записей в блоге: 2
25.12.2012, 22:39
Нативно же можно.
JavaScript
1
2
3
function getElementsByIds( idArr ) {
  return document.querySelectorAll( "#" + idArr.join(",#") )
}
IE8+. Принимает массив id'ов. Легко можно переделать под объект, но смысла не вижу — здесь удобнее передавать именно массив.

Присвоить выданный список одной переменной можно просто. Нескольким, честно сказать, не вижу смысла — какой-то костыльный вариант
0
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,529
26.12.2012, 07:18
Цитата Сообщение от GuardCat Посмотреть сообщение
Присвоить выданный список одной переменной можно просто. Нескольким, честно сказать, не вижу смысла — какой-то костыльный вариант
Вот одной то как раз смысла может и не быть, если этот элемент один два раза встречается в скрипте.
А когда много элементов, то я делаю allElem={}; и сюда разными способами, чаще вообще без ИД, запихиваю ссылки на нужные мне элементы, массив глобальный, а потом обращаюсь по именам.
Смотря что писать.
0
 Аватар для Heleg
209 / 209 / 6
Регистрация: 23.10.2011
Сообщений: 971
26.12.2012, 11:04  [ТС]
GuardCat, для больших программ это может быть тупо, но я вначале скрипта через var объявляю глобальные объекты, с которыми мне придется работать весь скрипт. а вот присваивать им значение приходится после. как сказал newJS, можно под них выделить один объект. querySelectorAll - это крутая штука, но пока мало где работает
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
26.12.2012, 13:02
Цитата Сообщение от Heleg Посмотреть сообщение
querySelectorAll - это крутая штука, но пока мало где работает
да вообще-то уже везде работает, включая MSIE с версии 8 -- https://developer.mozilla.org/... electorAll
0
 Аватар для Heleg
209 / 209 / 6
Регистрация: 23.10.2011
Сообщений: 971
26.12.2012, 13:45  [ТС]
kalabuni, думешь, можно уже юзать, не оборачиваясь на старые версии браузеров?
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
26.12.2012, 14:59
Heleg, нет, так я не думаю

всё зависит от ТЗ на сайт - мей би, у вас стоит задача, чтобы даже самый первый браузер Mosaic выпуска ноября 1993 года мог страницы отображать

а вообще все эти новомодные querySelectorAll () да getElementsByClassName () не люблю и не пользуюсь ими
0
Просто любитель
 Аватар для GuardCat
626 / 464 / 120
Регистрация: 20.01.2011
Сообщений: 865
Записей в блоге: 2
28.12.2012, 00:13
Heleg, а я думаю именно так. Чем меньше поддержки древностей, тем скорее все они отвалятся. Google перестал поддерживать ие7 в сервисе apps больше полутора лет назад. Поддерживать раритеты стоит только, если есть корпоративные посетители, которых заставляют пользоваться убожеством.
kalabuni, ECMAScript развивается, как и DOM/BOM. Зачем лишать себя новых возможностей? Просто дань привычке?
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
28.12.2012, 02:35
Цитата Сообщение от GuardCat Посмотреть сообщение
Зачем лишать себя новых возможностей? Просто дань привычке?
ну написал же - просто "не люблю"
кто-то не любит MSIE... другой не любит пиво...
а я вот не люблю кое-какие из нововведений

причём к querySelectorAll () "чувства" мои более мягкие, чем к getElementsByClassName ()
потому что историю включения этого метода в спецификацию представляю себе так

1. сначала придумали html

2. потом придумали css

3. чтобы облегчить внедрение css на страницах, в html ввели атрибут class
и сразу договорились, что одно и то же значение class можно присваивать одновременно множеству тегов на странице - это посчитали удобным

4. затем придумали javascript

5. через атрибут class однозначно идентифицировать тег нельзя, потому что одно и то же значение class можно присваивать нескольким тегам
придумали поэтому атрибут id и ввели его в html
договорились каждому тегу на странице давать свой уникальный id
__________________

всё это происходило ещё в прошлом веке - и окончательно "устаканено" было в спецификациях к 1999 году

однако, в 2006 году идиот Джон Резиг, придумавший программу для дураков под названием JQuery, решил зачем-то вернуться в прошлый век и использовать class для идентификации тегов
хотя, может быть, он такого вовсе и не хотел - а просто для удобства реализовал отбор элементов по селектору className

но дураки, как известно, - доминантная раса, они посчитали, что идентификация по имени class - это самое то... встречал программы, где вовсе нет id, а только class... удобно, говорят дураки - можно и идентифицировать тег, и заодно стиль ему указать...

именно поэтому в 2012 году народ возмущается - а почему это где-то в каких-то браузерах не понимают идентификации по атрибуту class
и даже удивляются - разве такое может быть?

корпорация W3C до последнего сопротивлялась давлению дураков-почитателей JQuery, но в конце-концов и она была вынуждена уступить массовому безумию - метод getElementsByClassName () теперь уже легализован
__________________

id - это фамилия_имя_отчество человека
class - это цвет его волос

и Иванов, и Петров, и Сидоров - все они могут быть одного class="рыжие", но ФИО у них у всех - разные

почитатели JQuery решили, что лучше людей не называть по именам-фамилиям, а обзывать их "брюнет1", "брюнет2",.. "рыжий15",.. "лысый21"...

и маленький пример 'для подумать' тем, кому есть чем

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
<style>
/* вопрос - СКОЛЬКО здесь определено классов: один или три? */
  p.red {background-color: red}
  b.red {color: red} 
div.red {border-left: 5px solid red}
</style>
 
<body onload="alert (document.getElementsByClassName ('red').length)">
<p class="red">11111</p>
<b class="red">22222</b>
<div class="red">333</div>
<!-- а чего нам тут показывает метод getElementsByClassName ('red')? -->
</body>
0
 Аватар для Heleg
209 / 209 / 6
Регистрация: 23.10.2011
Сообщений: 971
28.12.2012, 11:05  [ТС]
kalabuni, сначала хотел поспорить, но после некоторых раздумий не могу не согласиться. всё таки дурак и byClass и byId при желании может через задницу использовать, а выборка по классу порой бывает полезна.
GuardCat, я бы с радостью закопал все эти msie 6-7. но как объяснить это нерадивому заказчику, которому знакомые жалуются, что его сайт у них плохо работает в 6-ом ишаке в офисе? это, конечно, уже риторический вопрос.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.12.2012, 11:05
Помогаю со студенческими работами здесь

предложите другой вариант решения
Задача: вычислить y=sin (x) на интервале от Xn до Xk с шагом h и сравнить результат с разложением функции sin (x)на этом интервале: ...

Найти другой вариант реализации объекта
Здравствуйте! Подскажите пожалуйста как сверстать такой объект: http://jsfiddle.net/9ok351kL/36/ &lt;div...

Апгрейд или есть другой вариант?
Корпус Cooler Master HAF 912 Plus, Black БП ATX 600W FSP ATX-600PNR Intel Core i5 3470 GigaByte GA-B75-D3V DDR-3 DIMM 4 Gb х 2 ...

Создания из двух список одного. Другой вариант
и еще один вариант,если можно. даны два списка a=(1 2 3 4) и b=(4 5 6 7) получить новый список у=(1/4 +2/5 + 3/6 +4/7) Вот здесь...

Создать класс или есть другой вариант?
Всем привет, нужно заполнить dataGridView данными(всего 5 стобцов), эти данные я получаю из БД, и там где я их получаю я не имею...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru