Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.03.2018, 01:28
Кандидат Javascript-наук
Отправить личное сообщение для SpaceAlarm Посмотреть профиль Найти все сообщения от SpaceAlarm
 
Регистрация: 05.05.2016
Сообщений: 103

Дублировать div и заполнить из массива
Добрый вечер, есть массив и блок <div> его нужно скопировать и заполнить из контента
<div class="posting">
    	<div class="head">
        	last message
        </div>
        <div class="list-post">
        	<div class="post">
            	<div class="author"><a href="#">test1</div>
                <div id = 'message' class="link"><a href="#">hello</a></div>
                <div class="info">info <a href="#">click</a></div>
           </div>
           <div class="post">
            	<div class="author"><a href="#">test2</div>
                <div id = 'message' class="link"><a href="#">hello1</a></div>
                <div class="info">info <a href="#">click</a></div>
           </div>
           <div class="post">
            	<div class="author"><a href="#">test3</div>
                <div id = 'message' class="link"><a href="#">hello2</a></div>
                <div class="info">info <a href="#">click</a></div>
           </div>
           <div class="post">
            	<div class="author"><a href="#">test4</div>
                <div id = 'message' class="link"><a href="#">hello3</a></div>
                <div class="info">info <a href="#">click</a></div>
           </div>
    </div>

let list-message  = 
 [{user: "test1", last: "hello"},
 {user: "test2", last: "hello2"},
 {user: "test3", last: "hello2"},
 {user: "test4", last: "hello3"}]

Как это организовать в коде?
Ответить с цитированием
  #2 (permalink)  
Старый 22.03.2018, 02:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

SpaceAlarm,

<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>

        <div class="list-post">
        	<div class="post">
            	<div class="author"><a href="#">test1</div>
                <div id = 'message' class="link"><a href="#">hello</a></div>
                <div class="info">info <a href="#">click</a></div>
           </div>
           <div class="post">
            	<div class="author"><a href="#">test2</div>
                <div id = 'message' class="link"><a href="#">hello1</a></div>
                <div class="info">info <a href="#">click</a></div>
           </div>
           <div class="post">
            	<div class="author"><a href="#">test3</div>
                <div id = 'message' class="link"><a href="#">hello2</a></div>
                <div class="info">info <a href="#">click</a></div>
           </div>
           <div class="post">
            	<div class="author"><a href="#">test4</div>
                <div id = 'message' class="link"><a href="#">hello3</a></div>
                <div class="info">info <a href="#">click</a></div>
           </div>
    </div>
<script>
var list = [].map.call( document.querySelectorAll('.post'), function(el) {
   return   {user : el.querySelector('.author').textContent.trim(),
      last : el.querySelector('.link').textContent.trim()}
});
document.write(JSON.stringify(list))
</script>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 22.03.2018, 03:06
Кандидат Javascript-наук
Отправить личное сообщение для SpaceAlarm Посмотреть профиль Найти все сообщения от SpaceAlarm
 
Регистрация: 05.05.2016
Сообщений: 103

Вы наверное меня не так поняли, мне нужно из массива вставить данные в list-post, типо как чат, и блок <div class="post"> должен быть в html 1 раз, а в js создавать такие же блоки и заполнять информацией из массива.

let list-message  = 
 [{user: "name1", last: "welcome1"},
 {user: "name2", last: "welcome2"},
 {user: "name3", last: "welcome3"},
 {user: "name4", last: "welcome4"}]

Последний раз редактировалось SpaceAlarm, 22.03.2018 в 03:25.
Ответить с цитированием
  #4 (permalink)  
Старый 22.03.2018, 07:41
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<div class="list-post"></div>
	<script>
		let listMessage  = 
		[{user: "name1", last: "welcome1"},
		{user: "name2", last: "welcome2"},
		{user: "name3", last: "welcome3"},
		{user: "name4", last: "welcome4"}];

		listMessage.forEach(el=>{
			document.querySelector(".list-post").insertAdjacentHTML('beforeend', `<div class="post">
				<div class="author"><a href="#">${el.user}</a></div>
				<div id = 'message' class="link">${el.last}<a href="#">hello</a></div>
				<div class="info">info <a href="#">click</a></div>
				</div>`);	
		});
	</script>	
</body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 22.03.2018, 08:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

создание блоков из массива
SpaceAlarm,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>

        <div class="list-post">
        	<div class="post">
            	<div class="author"><a href="#">test1</a></div>
                <div id = 'message' class="link"><a href="#">hello</a></div>
                <div class="info">info <a href="#">click</a></div>
           </div>
       </div>
<script>
var list = [{
    user: "name1",
    last: "welcome1"
}, {
    user: "name2",
    last: "welcome2"
}, {
    user: "name3",
    last: "welcome3"
}, {
    user: "name4",
    last: "welcome4"
}];
var parent = document.querySelector(".list-post"),
    template = parent.removeChild(parent.querySelector(".post")),
    content = document.createDocumentFragment();
list.reduce(function(content, el) {
    var clone = template.cloneNode(true);
    clone.querySelector(".author").textContent = el.user;
    clone.querySelector(".link").textContent = el.last;
    content.appendChild(clone);
    return content;
}, content);
parent.appendChild(content);
</script>
</body>
</html>
Ответить с цитированием
  #6 (permalink)  
Старый 22.03.2018, 11:55
Кандидат Javascript-наук
Отправить личное сообщение для SpaceAlarm Посмотреть профиль Найти все сообщения от SpaceAlarm
 
Регистрация: 05.05.2016
Сообщений: 103

Благодарю, работает, спасибо!
Ответить с цитированием
  #7 (permalink)  
Старый 22.03.2018, 14:54
Кандидат Javascript-наук
Отправить личное сообщение для SpaceAlarm Посмотреть профиль Найти все сообщения от SpaceAlarm
 
Регистрация: 05.05.2016
Сообщений: 103

Сообщение от рони Посмотреть сообщение
SpaceAlarm,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>

        <div class="list-post">
        	<div class="post">
            	<div class="author"><a href="#">test1</a></div>
                <div id = 'message' class="link"><a href="#">hello</a></div>
                <div class="info">info <a href="#">click</a></div>
           </div>
       </div>
<script>
var list = [{
    user: "name1",
    last: "welcome1"
}, {
    user: "name2",
    last: "welcome2"
}, {
    user: "name3",
    last: "welcome3"
}, {
    user: "name4",
    last: "welcome4"
}];
var parent = document.querySelector(".list-post"),
    template = parent.removeChild(parent.querySelector(".post")),
    content = document.createDocumentFragment();
list.reduce(function(content, el) {
    var clone = template.cloneNode(true);
    clone.querySelector(".author").textContent = el.user;
    clone.querySelector(".link").textContent = el.last;
    content.appendChild(clone);
    return content;
}, content);
parent.appendChild(content);
</script>
</body>
</html>
Еще вопрос, <a href="#">test1</a>, <a href="#">hello</a> удаляется тэг ссылки как исправить?

Последний раз редактировалось SpaceAlarm, 22.03.2018 в 15:00.
Ответить с цитированием
  #8 (permalink)  
Старый 22.03.2018, 15:23
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

SpaceAlarm,
Добавить красное
clone.querySelector(".author a").textContent = el.user;
clone.querySelector(".link a").textContent = el.last;
Ответить с цитированием
  #9 (permalink)  
Старый 22.03.2018, 15:53
Кандидат Javascript-наук
Отправить личное сообщение для SpaceAlarm Посмотреть профиль Найти все сообщения от SpaceAlarm
 
Регистрация: 05.05.2016
Сообщений: 103

Благодарю!
Ответить с цитированием
  #10 (permalink)  
Старый 22.03.2018, 16:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Dilettante_Pro,
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обработчик событий для динамически добавленных элементов Tecvid Events/DOM/Window 28 25.06.2018 13:49
как заполнить данными из массива динамические поля prog77 jQuery 8 19.07.2017 12:47
Обработка ответа $.post запроса - как в блоке div получить переменную массива NeilDaniels jQuery 63 31.05.2016 13:28
Дублировать текст из description в div Globus Элементы интерфейса 6 30.01.2015 20:45
Показать div при наведении / jQuery updaite Элементы интерфейса 4 28.07.2014 03:45