Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   как взять массив из блоков с одной страницы и вставить на другу. (https://javascript.ru/forum/dom-window/75691-kak-vzyat-massiv-iz-blokov-s-odnojj-stranicy-i-vstavit-na-drugu.html)

Migor 30.10.2018 13:28

link is not defined

SuperZen 30.10.2018 13:44

index.html
<html>

<head>
  <link id="news" rel="import" href="/news.html" />
</head>

<body>
  <div id="news-placeholder"></div>
  <script>
    var content = document.getElementById('news').import;
    var items = content.getElementsByClassName('news-item')
    items.length && document.getElementById('news-placeholder').appendChild(items[0])
  </script>
</body>

</html>


news.html
<div class="news">
  <div class="news-item">news 1</div>
  <div class="news-item">news 2</div>
  <div class="news-item">news 3</div>
</div>

SuperZen 30.10.2018 13:48

только это не будет индексироваться поисковиками )

Dilettante_Pro 30.10.2018 13:52

Цитата:

Сообщение от Migor
<link rel="import" id="link" onload="main_news()" href="news.html">
let main_news_content = document.querySelector('.main_news_content');
function main_news() {
let last_news = link.import.querySelector('#last_news');
console.log(last_news);
main_news_content.appendChild(last_news);
};
main_news();

выдаёт: link.import is undefined

Уберите отдельный вызов main_news(); (или сделайте его - для тестирования - по какой-нибудь кнопке)
и поместите link в раздел head до скрипта.

И лучше новости выделить из полного news.html - только, например, <div class="contente"> с содержимым в отдельный файл и подгружать его и на главную страницу, и на страницу новостей - чтобы стили и скрипты не грузились дважды во избежание конфликтов

Migor 30.10.2018 15:34

Всем спасибо за помощь!

Migor 30.10.2018 15:36

а чтоб поисковиками индексировалось что нужно сделать? или это уже не на js делается?

Migor 30.10.2018 15:42

Цитата:

Сообщение от SuperZen (Сообщение 497416)
index.html
<html>

<head>
  <link id="news" rel="import" href="/news.html" />
</head>

<body>
  <div id="news-placeholder"></div>
  <script>
    var content = document.getElementById('news').import;
    var items = content.getElementsByClassName('news-item')
    items.length && document.getElementById('news-placeholder').appendChild(items[0])
  </script>
</body>

</html>


news.html
<div class="news">
  <div class="news-item">news 1</div>
  <div class="news-item">news 2</div>
  <div class="news-item">news 3</div>
</div>

items.length в данном случае что делает?

SuperZen 30.10.2018 15:44

для поисковика это должно рендрериться на стороне сервера...
item.length && это проверка на то, что хоть какие-то элементы найдены, и если найдены то делаем appendChild


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