Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/56: Рейтинг темы: голосов - 56, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 12.08.2011
Сообщений: 17

Почему document.getElementById(value) возвращает null?

07.02.2013, 22:17. Показов 11779. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
почему такое может происходить ?
элемент с таким id существует.
а вот функция возвращает null.

помогите пожалуйста.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.02.2013, 22:17
Ответы с готовыми решениями:

Document.getElementById возвращает null
Здравствуйте. Нужно задать по id элементу его видимость. Но все методы уже перебробованы и jquery и чистый js, результата никакого. Решила...

document.getElementById()
Здраствуйте, что-то у меня не выходит заменить <div id="block_1"></div>, проблема в том что id блока у меня динамический ...

Определение браузера (document.getElementById && !document.all ? 1 : 0;)
Добрый день! На форуме (https://www.cyberforum.ru/javascript/thread366501.html) наткнулся на такую конструкцию: var ns6 =...

14
В экстазе
 Аватар для wolfalone
168 / 152 / 38
Регистрация: 05.08.2012
Сообщений: 767
Записей в блоге: 3
07.02.2013, 22:50
Такое может происходит из-за ошибок в коде. Весь код в студию пожалуйста!
0
0 / 0 / 0
Регистрация: 12.08.2011
Сообщений: 17
07.02.2013, 23:10  [ТС]
у меня есть картинки
HTML5
1
2
3
4
<img src='images/1.jpg' id="image_1" style="position: absolute;" />
<img src='images/2.jpg' id="image_2" style="opacity: 0; filter: alpha(opacity=0);/>
<img src='images/3.jpg' id="image_3" style="opacity: 0; filter: alpha(opacity=0);/>
<img src='images/4.jpg' id="image_4" style="opacity: 0; filter: alpha(opacity=0);/>
пишу функцию переключения картинок по клику на кнопках (but_1 ... but_4)
так вызываю функцию
HTML5
1
<img src="https://www.cyberforum.ru/images/but_1.png" onClick= "flade_onClick (1)"/>
ну и собственно сама функция.
JavaScript
1
2
3
4
5
6
 function fade_onClick( param)
    var image_now = 'image_' + i;
    var image_next = 'image_' + param;
    document.getElementById(image_now).style.opacity = 0.01;
    document.getElementById(image_next).style.opacity = 0.99;
  }
вот эта функция не работает вообще никак.
причём
JavaScript
1
alert (image_next);
выводит то что и должен
а вот
JavaScript
1
alert (document.getElementById(image_next));
возвращает NULL
0
В экстазе
 Аватар для wolfalone
168 / 152 / 38
Регистрация: 05.08.2012
Сообщений: 767
Записей в блоге: 3
07.02.2013, 23:34
Немного исправил код, т.к. переменная i не была инициализирована, а переменные image_now и image_now создавались внутри функции, при этом вызывались за их пределами. Код конечно "сырой" и написан исключительно для примера того, что все работает.

Код:
Кликните здесь для просмотра всего текста

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script type="text/javascript">
            var image_now = 0;
            var image_next = 0;
            var i = 1;
            function fade_onClick(param) {
                image_now = 'image_' + i;
                image_next = 'image_' + param;
                document.getElementById(image_now).style.opacity = 0.01;
                document.getElementById(image_next).style.opacity = 0.99;
            }
        </script>
    </head>
    <body>        
        <img src='images/1.jpg' id="image_1" style="position: absolute;" />
        <img src='images/2.jpg' id="image_2" style="opacity: 0; filter: alpha(opacity=0);"/>
        <img src='images/3.jpg' id="image_3" style="opacity: 0; filter: alpha(opacity=0);"/>
        <img src='images/4.jpg' id="image_4" style="opacity: 0; filter: alpha(opacity=0);"/>
        
        <script type="text/javascript">
            fade_onClick(1);
            alert('hello world!');
            alert(image_next);
            alert(document.getElementById(image_next));
        </script>
        
    </body>
</html>


Добавлено через 3 минуты
Вообще, для таких вещей я бы порекомендовал воспользоваться библиотекой JQuery, в ней все операции типа "Найти элемент по ID", скрыть/показать элемент, установить прозрачность элемента, и пр. делаются в одну строку кода, причем сразу по несколько операций! Например, найти элемент по ID, найти картинку которая в данный момент видна (отображается), скрыть ее, найти следующую за ней и показать её - делается в одну строчку кода, при желании, при этом намного удобнее, нежели писать это руками + кроссбраузерно.
0
10 / 10 / 1
Регистрация: 25.10.2012
Сообщений: 364
08.02.2013, 01:02
JavaScript
1
document.getElementById(value)
а что это вообще такое?

Правильный вариант такой, и то только втом случае. если вы считываете именно значение с поля input:

JavaScript
1
document.getElementById('you_id').value
Если же хотите прочитать текст внутри тегов, то так:

JavaScript
1
document.getElementById('you_id').innerHTML
0
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,529
08.02.2013, 09:11
Цитата Сообщение от wolfalone Посмотреть сообщение
делается в одну строчку кода, при желании, при этом намного удобнее, нежели писать это руками
большое заблуждение, чистый JS всегда, без исключений, будет весить меньше
для того чтобы написать эту самую одну строчку, нужно прицепить несколько десятков килобайт неиспользуемого кода, самообман это

и не забываем, все библиотеки написаны на JS
ИМХО.
0
В экстазе
 Аватар для wolfalone
168 / 152 / 38
Регистрация: 05.08.2012
Сообщений: 767
Записей в блоге: 3
08.02.2013, 10:49
newJS, всё разумеется так, но стоит так же обратить внимание на факт, что например JQuery хоть и занимает ~35Кб в сжатом виде (~90Кб без сжатия) - грузится все лишь 1 раз, особенно если автор сайта утрудил себя сделать ссылку для загрузки на Google, а не "куда-то", то есть очень большая вероятность, что этот "ненужный" код уже есть в кэше браузера. Плюс ко всему, указанную библиотеку активно используют Google, Яndex, Microsoft и многие другие "мамонты".

Так же, на счёт конечного размера: даже при условии полной загрузки библиотеки в несжатом виде (~90Кб), загружаться она будет всё равно, всего 1 раз для всего сайта, дальше будет работать из кэша. Из личного опыта могу сказать, что 90Кб, это не так много даже для тех, кто волей судьбы сидит на USB-модеме. В большинстве случаев, основной объём загрузки занимает графика, а не JQuery.

Ну или другой пример из жизни. На главной странице яндекса подключена JQuery. Я ещё не встречал человека, который бы не пользовался яндексом по тому, что у него слишком много JQuery грузится на главной, которая слишком много весит... И опять таки, даже всеми любимый яндекс, даже с учётом своей патологической мании оптимизации кода (обусловленного значительным снижением нагрузки на сервер, за счёт оптимизации) не гнушается использовать JQuery. Я думаю, кому-кому, а им точно было из чего выбрать (или написать самостоятельно, свой собственный код).

*Кстати, наш форум тоже использует JQuery.

Говоря про ~90/35Кб я имел в виду последнюю версию библиотеки, если совсем сильно "приспичило", можно взять старую её версию которая занимает меньше 50/20Кб, если и это слишком круто, то можно поискать ещё более старую версию. Но если и это не поможет, тогда лучше всего менять провайдера, однозначно. Либо, пора менять менять свой DialUp модем 14.4Кбит на хотя бы USB-модем что ли...

Ещё можно затронуть тему кроссбраузерности. Если на сайте требуется большое кол-во разносортных эффектов, я сомневаюсь, что в написании своего собственного кода "с нуля", будет какая-то выгода. А если каждый начнет свой слайдер, ЛайтБокс и пользовательский интерфейс - будет делать свой собственный?

На мой взгляд отрицать полезность подобных библиотек можно только в случае, наличия достойной для них замены. Как-то примерно так: "Хлам ваш JQuery, я вот тут лучше либу сделал". А писать свой код постоянно, под каждый "пшик", это не серьёзно. Настолько не не серьёзно, насколько весь подряд софт на ассемблере.

К тому же, мне кажется, автор интересовался непосредственно вопросом "как сделать?", про объёмы кода и пр. условия автор ничего не говорил...

Добавлено через 5 минут
Цитата Сообщение от Joker555 Посмотреть сообщение
Код JavaScript
document.getElementById(value)
а что это вообще такое?
Правильный вариант такой, и то только втом случае. если вы считываете именно значение с поля input:
JavaScript
1
2
var value = 'you_id';
var object = document.getElementById(value);
Это получение ссылки на DOM-элемент, по его ID'шнику
0
10 / 10 / 1
Регистрация: 25.10.2012
Сообщений: 364
08.02.2013, 12:22
Цитата Сообщение от wolfalone Посмотреть сообщение
Код JavaScript

var value = 'you_id';
var object = document.getElementById(value);
Это получение ссылки на DOM-элемент, по его ID'шнику
а ну тогда, проблема может быть в следующем:

код расположен выше элемента. Это может происходить, если он сразу исполняется при загрузке странице, а не при клике к примеру, когда уже все загрузилось. А вообще мой совет ТС, используйте фремворк jQuery.


newJS, ты не прав.Я сам не любитель использовать фремворки/библиотеки, но JS это не тот случай. JS - это такой нервный язык, в нем даже нет некоторых основных функций в нормальном виде. Вы говорите, что кода много, а Вы не забывайте, что этот код исполняется на стороне клиента, и поверьте он не забьет проц этим. даже самого слабого компа. Так что не надо беспокоится по этому поводу.
0
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,529
08.02.2013, 20:23
Любая библиотека это зло, ни когда не понимал зачем ради экономии десятка байт цеплять заведомо неиспользуемые несколько десятков килобайт.
0
10 / 10 / 1
Регистрация: 25.10.2012
Сообщений: 364
08.02.2013, 23:28
Цитата Сообщение от newJS Посмотреть сообщение
Любая библиотека это зло, ни когда не понимал зачем ради экономии десятка байт цеплять заведомо неиспользуемые несколько десятков килобайт.
согласен, но не любая. Вот смотри, смысл не использовать библиотеку в JS? Ведь это такой дурной язык, без jQuery ты не можешь нормально выделить класс, только иды. И многое другое. К тому же, ты опять забываешься, JS работает на стороне клиента, процу не в тяготу такую мелочь запустить.
0
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,529
09.02.2013, 07:20
Цитата Сообщение от Joker555 Посмотреть сообщение
Ведь это такой дурной язык, без jQuery ты не можешь нормально выделить класс, только иды.
Такое говорят те, кто не знает JS, кто сразу начал с библиотек(и таких людей много), сначала нужно язык учить, а потом использовать библиотеки.
Еще раз напоминаю, jQuery написан на JS, а не на другом языке, значит вышеприведенная цитата не имеет права на жизнь.



Цитата Сообщение от Joker555 Посмотреть сообщение
К тому же, ты опять забываешься, JS работает на стороне клиента, процу не в тяготу такую мелочь запустить.
Ну да, все так думают, в итоге эти мелочи превращаются в проблемы, ни кто не хочет думать сколько не нужного мы качаем, занимаем каналы, и тут же возмущаемся, днем скорость падает и ЧЁ им всем в инете надо, я то по делу, а они ЧЁ....

Цитата Сообщение от wolfalone Посмотреть сообщение
Но если и это не поможет, тогда лучше всего менять провайдера, однозначно. Либо, пора менять менять свой DialUp модем 14.4Кбит на хотя бы USB-модем что ли...
А для многих это не возможно, да и отношение к отдельно взятому челу скорее отрицательное....

И вообще, для библиотек есть свои разделы.
0
В экстазе
 Аватар для wolfalone
168 / 152 / 38
Регистрация: 05.08.2012
Сообщений: 767
Записей в блоге: 3
09.02.2013, 08:12
Цитата Сообщение от newJS Посмотреть сообщение
ни кто не хочет думать сколько не нужного мы качаем, занимаем каналы, и тут же возмущаемся, днем скорость падает и ЧЁ им всем в инете надо, я то по делу, а они ЧЁ....
Кэш в браузерах отменили?

Цитата Сообщение от newJS Посмотреть сообщение
А для многих это не возможно
Если для человека невозможно заменить DialUp-модем, это скорее его личные проблемы, а не JS-программиста. На дворе благо не 90-е, и рекомендации типа "страница не должна превышать 50Кб" уже не актуальны.

Из поста выше, можно сделать вывод, что те кто работают в гугле и яндексе - ничего не смыслят в своей работе. Они активно используют JQuery, видимо по тому, что не знают JavaScript... и Microsoft туда же!

Разумеется, постоянно скачивать килобайты разношерстного JS-кода, "оптимизированного" (созданного) под разные "конкретные" задачи, куда лучше чем 1 раз скачать JQuery (~35Кб) и использовать её в последствии из кэша браузера.


Цитата Сообщение от newJS Посмотреть сообщение
Ну да, все так думают, в итоге эти мелочи превращаются в проблемы
Чаще, в проблемы превращается масса бесполезного кода, не годного в последствии к повторному использованию.


Цитата Сообщение от newJS Посмотреть сообщение
Такое говорят те, кто не знает JS, кто сразу начал с библиотек(и таких людей много), сначала нужно язык учить, а потом использовать библиотеки.
Еще раз напоминаю, jQuery написан на JS
Эти два предложения противоречат друг другу. Получается, что человек использует библиотеку написанную на JS, не зная JS. Код, "использования" библиотеки не JS?

Основываясь на выше написанном (посте), невольно напрашивается вывод, что либо авторы JQuery либо плохо знают язык, и библиотека написана безграмотно. Либо, повторное использование кода - зло. Соответственно и ООП как таковое зло. А мировые гиганты интернет-индустрии (список выше) - вообще исчадия ада, т.к. они заставляют людей скачивать лишние 35Кб JS-кода... хуже того, они ещё и картинки юзают на сайтах, которые вообще страшно засоряют трафик, и не дают другим (которые в интернет вышли "по делу") нормально работать! Даёшь эру 14.4Кбит и DialUp-модемы!

Добавлено через 8 минут
Мне кажется, нужно решать проблему "от корня". Давайте тогда уж закроем все торренты, соц. сети, отменим картинки на сайтах, и обязательно закроем видео-сервисы, типа ЮТуба, т.к. они создают куда-больший трафик, нежели злощастная JQuery со своими 35-ю килобайтами... Введём обязательное сжатие веб-страниц, что бы трафик экономился, и самое главное, отменим все двухбайтовые кодировки, типа UTF, т.к. они увеличивают размер страницы вдвое...

Добавлено через 8 минут
И ещё один не маловажный момент, раз уж мы так свято чтим интересы 0.1% пользователей с модемами на 14.4, я думаю, тогда стоит подумать и об 1% пользователей, которые до сих пор юзают IE6, а есть ещё и те, кто всякие IE5 юзает, и другие браузеры. А у некоторых JavaScript вообще отключен, давайте тогда уж совсем от него откажемся, ведь около 1% пользователей вообще отключили JS в браузерах (а в некоторых браузерах, даже нет его поддержки), давайте о них заботится!
0
10 / 10 / 1
Регистрация: 25.10.2012
Сообщений: 364
09.02.2013, 12:08
Цитата Сообщение от newJS Посмотреть сообщение
Такое говорят те, кто не знает JS, кто сразу начал с библиотек(и таких людей много), сначала нужно язык учить, а потом использовать библиотеки.
Еще раз напоминаю, jQuery написан на JS, а не на другом языке, значит вышеприведенная цитата не имеет права на жизнь.
а вот и нет, я прекрасно знаю, что без фремворка можно выделить класс, я просто говорю что это сложнее. Я как раз на фремворках не начинал, так как я не понимал что это вообще такое. Но с ним проще.


Цитата Сообщение от newJS Посмотреть сообщение
Ну да, все так думают, в итоге эти мелочи превращаются в проблемы, ни кто не хочет думать сколько не нужного мы качаем, занимаем каналы, и тут же возмущаемся, днем скорость падает и ЧЁ им всем в инете надо, я то по делу, а они ЧЁ....
ой да я Вас умоляю, вы реально несете анихею, сейчас ни у кого уже нету диалпа, у меня провайдер РосТелеком, самый крупнейшей провайдер по России (он организовывал видео наблюдение онлайн при выборах с защитой от ддос), так вот даже они убрали уже этот сра**ый диалАп, давным давно, у всех щас мин 128кб/сек скорость, и то в основном большие скоростя.

Вы реально придираетесь к вещам, которым не стоит уделять внимание. Вы сравниваете 1 на 1000. Когда мы пишем php код, надо думать, то за 1 сек может происходит тысячи подключений к веб-серверу, и разница есть когда мы используем метод занимающий 0,5сек на выполнение и метод занимающий 0,3 сек на выполнение. Потому что если посчитать, то выходит:

1000 обращений за 1сек при 0,5 = 500мс
1000 обращений за 1сек при 0,3 = 300мс

Разница в 200мс. А бывает по 5к+ обращений, смотря что за портал.

А JS - он выполняется на стороне клиента. неужели 1 даже самый сра**ый комп не выдержит его ниочемошной нагрузки? Повторюсь, вы думаете ни о том, чем нужно думать. Вы конкретно неправы, поменяйте свои приоритеты, пересмотрите все.
0
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,529
09.02.2013, 21:18
Цитата Сообщение от Joker555 Посмотреть сообщение
сейчас ни у кого уже нету диалпа,
а вот это утверждать не надо, в России много мест где нет инета вообще и очень многие не могут себе позволить перейти на что то более дорогое, впрочем дорогое не гарантирует качество.

и не надо цифры приводить, они действительны только там где хорошая связь, а для тех кто не понял, повторю, в России хорошая связь это роскошь, а в основном только название.
При отвратительной связи все эти выкладки дохнут как мухи осенью.
0
10 / 10 / 1
Регистрация: 25.10.2012
Сообщений: 364
09.02.2013, 21:52
Цитата Сообщение от newJS Посмотреть сообщение
а вот это утверждать не надо, в России много мест где нет инета вообще и очень многие не могут себе позволить перейти на что то более дорогое, впрочем дорогое не гарантирует качество.

и не надо цифры приводить, они действительны только там где хорошая связь, а для тех кто не понял, повторю, в России хорошая связь это роскошь, а в основном только название.
При отвратительной связи все эти выкладки дохнут как мухи осенью.
буду утверждать, потому что у меня у самого был когда-то диал-ап санный, когда у многих был уже АДСЛ, век диал-ап уже прошел, поверь. Я тоже в жопе живу, однако у меня 8мб/сек. Да кстати, в деревнях инет лучше, чем в моей маленькой провинции.

Цитата Сообщение от newJS Посмотреть сообщение
в России много мест где нет инета вообще
поверь им все равно будешь ли ты подключать библиотеку или нет На сегодня инета нет у того, кому он напрочь не нужен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.02.2013, 21:52
Помогаю со студенческими работами здесь

CreateRange[n] == document.getElementById('id')
Здравствуйте, кто может знает можно ли сравнивать DOM - элементы из фрагмента, (например var sel = window.getSelection(); rng =...

Document.getElementById не работает
Добрый день! document.getElementById не работает! в таблице несколько строк генерируются &lt;td&gt;&lt;input type=text...

Javacript.document.getElementById
Привет всем!!!! Ребят помогите плс. есть javacript. echo &quot;&lt;a href='javascript:void();' onclick='del_ph()'&gt; &lt;img...

GetElementById и document.write
Искал подобную тему на форуме и в поисковике. Было очень много про getElementById, но практически ничего про мой вопрос. Информация о...

Чем заменить document.getElementById
Столкнулся с проблемой не могу побороть. Есть такой код для вывода формы &lt;div id=&quot;ShowAddComment&quot;&gt; ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru