Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не срабатывает getElementById (https://javascript.ru/forum/misc/44103-ne-srabatyvaet-getelementbyid.html)

totalavitaminoz 06.01.2014 21:07

Не срабатывает getElementById
 
Только-только начал изучать js, не бейте сильно.

В примере на странице - http://javascript.ru/tutorial/dom/search - дан код, меняющий ссылку на синию.
На этой же странице я нахожу элемент navbar-row, подставляю его вместо элемента в примере, консоль в хроме отдаёт значение подставляемого цвета, но на странице цвет текста не меняется.
Вместо параметра color подставляю padding, измнения на странице происходят.
Что я делаю не так?

Дальше. Беру работающий код с паддингом, подключаю его через site preference в опере, но обработчик выдаёт ошибку
User Javascript thread
Uncaught exception: TypeError: Cannot convert 'document.getElementById('navbar-row')' to object
Error thrown at line 1, column 0 in autogod.js:
    document.getElementById('navbar-row').style.padding = '20px';


Такая же ерунда с greasemonkey в файрфоксе.
Объясните, почему?

рони 06.01.2014 21:20

Цитата:

Сообщение от totalavitaminoz
В примере на странице - http://learn.javascript.ru/dom/search - дан код,

Цитата:

Страница "/dom/search" не найдена..
:-?

totalavitaminoz 06.01.2014 21:24

Цитата:

Сообщение от рони (Сообщение 290796)
:-?

Извиняюсь, не ту ссылку вставил. Исправил.

Erolast 06.01.2014 21:51

Цитата:

На этой же странице я нахожу элемент navbar-row, подставляю его вместо элемента в примере, консоль в хроме отдаёт значение подставляемого цвета, но на странице цвет текста не меняется.
Ну да, ты цвет текста внутри div'а c id navbar-row исправил. Все работает. Вот только во всех ссылках внутри этого элемента прописан свой собственный цвет, который, естественно, перекрывает цвет родительского элемента. Потому и не видно изменений.
Попробуй теперь набрать в консоли следующее:
document.getElementById('navbar-row').innerHTML += "mytext";

То есть, добавить в div голый текст. Его цвет будет изменен.

totalavitaminoz 07.01.2014 10:46

Точно, об этом совсем забыл. Спасибо.
А почему может не работать подключаемый скрипт, хотя через консоль всё получается?

melky 07.01.2014 12:54

Цитата:

Сообщение от totalavitaminoz (Сообщение 290844)
Точно, об этом совсем забыл. Спасибо.
А почему может не работать подключаемый скрипт, хотя через консоль всё получается?

возможно, подключаешь в <head>. Если это так, то на момент работы скрипта элемента еще нет (ну не обработалось ещё HTML дерево)

самый легкий вариант решения проблемы - подключать <script> перед закрывающим тегом body (</body>)

totalavitaminoz 07.01.2014 13:20

Цитата:

Сообщение от melky (Сообщение 290851)
возможно, подключаешь в <head>. Если это так, то на момент работы скрипта элемента еще нет (ну не обработалось ещё HTML дерево)

самый легкий вариант решения проблемы - подключать <script> перед закрывающим тегом body (</body>)

Я подключаю его как внешний скрипт через настройки браузера.
http://www.opera.com/docs/userjs/using/#writingscripts.

Например, вот:
// ==UserScript==
// @name          test yandex
// @description   test yandex
// @include       [url]http://yandex.ru*[/url]
// ==/UserScript==

music = document.getElementById('tab-music').innerHTML; alert (music);


upd
Понял свою ошибку, забыл прописать условие для адреса с www


Часовой пояс GMT +3, время: 08:06.