Javascript DOMでul内のliをコピーして既存liの間にコピーを挿入する(要素の追加の処理)

前回の投稿の続きです

 

 

kirikko-scondcube.hatenablog.com

 

今回は既存のli要素item0をコピーしてitem2とitem1の間にコピーしたitem0を挿入する処理

 

 

f:id:kirikko_Scondcube:20200411163137p:plain

挿入前

f:id:kirikko_Scondcube:20200411163140p:plain

挿入後


html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>

<link rel="stylesheet" href="css/style.css">
</head>
<body>

<button>run</button>

<ul>
<li>item 0</li>
<li>item 1</li>
<li>item 2</li>
</ul>

<script src="js/main.js"></script>
</body>
</html>

 

js

`use strict`;

{


document.querySelector('button').addEventListener('click', ()=>{

const item0 = document.querySelectorAll('li')[0];
//ここでliタグの0番目の要素を定数化している
const copy = item0.cloneNode(true);
//ここでitem0に対し複製処理をしている(true)は中のテキストもコピーすることをさす。(false)だとテキストはコピーせず空要素のみコピーされる.つまり空のli要素が作られる。

const ul = document.querySelector('ul');
//定数ulにulの要素を設定

const item2 =document.querySelectorAll('li')[2];
//今回はitem1とitem2の間に複製したitem0を入れたいのでitem2を定数化し、指定できるようにしている。

ul.insertBefore(copy, item2);
//insertBeforeは2番目の引数の場所の上に1つ目の引数のnodeを挿入する。
//ここで挿入処理をするためにitem2を事前に定数化した


})


}