Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Добавление элемента на чужой сайт (https://javascript.ru/forum/events/64604-dobavlenie-ehlementa-na-chuzhojj-sajjt.html)

SergeyAndSmart 24.08.2016 14:52

Добавление элемента на чужой сайт
 
Добрый день. Мне необходимо добавить пункт в меню сайта. Код меню приведен на скрине.
Я добавляю элемент так:
var list = document.getElementsByClassname('topbar-nav-main dt-compact_topbar');
var li = document.createElement('LI');
li.innerHTML = 'Новый элемент списка';
list.appendChild(li);

Но ничего не работает. Помогите пожалуйста.

warren buffet 24.08.2016 15:07

По-моему проблема в древнем getElementsByClassname

var ul = document.querySelector('ul.topbar-nav-main');
if(ul) {
   var li = ul.appendChild(document.createElement('LI'));
   li.textContent='Новый пункт меню';
}

warren buffet 24.08.2016 15:13

Нет, там все равно будет много хтмля, так что лучше сразу его весь и засунуть

var
li='<li id='tvoe-id'><a href="your-link">Your Link</a></li>',
ul = document.querySelector('ul.topbar-nav-main');
if(ul) ul.insertAdjacentHTML('beforeend',li);


https://developer.mozilla.org/en-US/...rtAdjacentHTML

SergeyAndSmart 24.08.2016 15:13

Цитата:

Сообщение от warren buffet (Сообщение 426517)
По-моему проблема в древнем getElementsByClassname

var ul = document.querySelector('ul.topbar-nav-main');
if(ul) {
   var li = ul.appendChild(document.createElement('LI'));
   li.textContent='Новый пункт меню';
}

Спасибо, все работает. У меня тоже получилось, надо было указать [0] в конце. Ваш вариант мне больше нравится. :thanks:
var list = document.getElementsByClassName("topbar-nav-main dt-compact_topbar")[0];

SergeyAndSmart 24.08.2016 15:14

Цитата:

Сообщение от warren buffet (Сообщение 426519)
Нет, там все равно будет много хтмля, так что лучше сразу его весь и засунуть

var
li='<li id='tvoe-id'><a href="your-link">Your Link</a></li>',
ul = document.querySelector('ul.topbar-nav-main');
if(ul) ul.insertAdjacentHTML('beforeend',li);


https://developer.mozilla.org/en-US/...rtAdjacentHTML

А как в определенное место вставить?

warren buffet 24.08.2016 15:15

SergeyAndSmart, а ссылку я специально дал предвосхищая твой вопрос. )))

warren buffet 24.08.2016 15:16

А, в смысле после какого-то пункта? Это еще другой метод. https://developer.mozilla.org/en-US/...e/insertBefore

SergeyAndSmart 24.08.2016 15:17

Цитата:

Сообщение от warren buffet (Сообщение 426523)
А, в смысле после какого-то пункта? Это еще другой метод. https://developer.mozilla.org/en-US/...e/insertBefore

Огромнейшее спасибо, буду изучать! :thanks:

Rise 24.08.2016 16:53

Цитата:

Сообщение от warren buffet (Сообщение 426517)
древнем getElementsByClassname

А что есть "современный" аналог?

warren buffet 25.08.2016 08:51

Есть.

ЗЫ проблему кстати назовите уже.

Rise 25.08.2016 15:28

Цитата:

Сообщение от warren buffet (Сообщение 426568)
Есть.

Больше сказать видимо нечего...

warren buffet 26.08.2016 06:07

Этот метод всегда возвращает массив и когда нужен один элемент всегда придется добавлять [0]. А зачем, если есть метод выдающий один элемент - .querySelector()? Еще вот такая шняга есть https://developer.mozilla.org/en/doc...lement/matches ибо задолбали точками и решетками.

scrollquest 26.08.2016 09:30

Цитата:

Сообщение от SergeyAndSmart
getElementsByClassname

Возможно проблема в этом. Код не читал. И не слушай всяких клоунов, рассуждающих о проблемах древности и современности.

warren buffet 26.08.2016 13:20

Не слушай, катайся на верблюдах. )))


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