[ 06.01 ] DOM - CRUD
10383 ワード
[Achievement Goal]
1. CRUD
Create、Read、Update、Delete.
コンソールではなくWeb上でJavaScriptを使用するためにcrudを自由に使用する必要があります.
Create - createElement
Read - querySelector , querySelectorAll
Update - textContent , id , classList, setAttribute
Delete - remove , removeChild, innerHTML = '' , textContent = ''
Append - appendChild
create
createElementはdomで新しいタグを作成するために使用されます.
使用方法:document.createElement(「div」)/divラベルを作成します.
しかし、生成されてもWebで見ることはできません.
生成された状態だけを想像してみてください.
このように宙に浮いたラベルをウェブサイトに接続するのがappend機能です.
append
appendは実際のWebに接続された属性の1つであり,Webの実現位置,特徴に応じて使用種類を分けることができる.
append()-選択した要素を末尾に送信
prepend()-選択した要素を第1部に送信
次はappendとprependの例です.
<div id = 'container'>
<header id = 'header'>
<h1>첫번째 자식</h1>
<nav>head-1</nav>
<nav>head-2</nav>
<nav>head-3</nav>
</header>
<section id = 'section'>
<h1>두번째 자식</h1>
<ul>
<li>section-1</li>
<li>section-2</li>
<li>section-3</li>
</ul>
</section>
<footer id = 'footer'>
<h1>세번째 자식</h1>
<p>footer-1</p>
</footer>
</div>
footerのfooter-1の下にfooter-2というサブアイテムを追加したいです.
その時はどうすればいいですか.
まず考えなければならないのは、
必要なdom要素をすべて変数に含め、入力する内容を指定します.
const footer = document.querySelector('#footer')
const footerP = footer.children[1]; //footer-1
const addP = document.createElement('p');
addP.textContent = 'footer-2';
ここまでは変数を宣言している様子なのでappend処理して接続します.footer.appendChild(addP)
document.createElement('p');
ここで考慮すべきはfooter-1のpラベルの後ろにあるはずです.親フッターに基づいてappendChildを使用して作成します.
アントンはfooterp(footer-1)の後ろにいます.
ラベルをfooterpに入れてもWebで見ることができますが、ラベルが正しくないことがわかります.
なるべく親基準で追加しましょう!
ではprependを使うとどうなりますか?
標準のfooterpの上に来ます.
もし基準がfooterだったら?
footerラベルの前に表示されます!
ではappendとappendChildの違いは何でしょうか.
テキスト要素をappendChildに入れるとエラーが発生しますが、appendは直接テキスト要素をパラメータに入れることができます.
appendChildを使用してテキストを挿入する場合は、上記の例addPを使用します.textcontent=footer-2を入れると代入する必要がありますが、「append」(footer-2)を直接使用して不要なコードを減らすことができます.
const addP = document.createElement('p');
footer.append('footer-2')
また、1ノードしか追加できないappendChildよりも、スプレッドシート演算子(...)をサポートします.複数のノードを選択し、ラベルと組み合わせることができるという利点があります.
read
querySelector、querySelector Allは、id、class、tagを持つdom要素を読み込む役割を果たします.
シェイプ:
document.querySelector('#id')
document.querySelector('.class')
document.querySelector('div')
document.querySelectorAll('p') ..
2つの相違がある場合、querySelector All()はパラメータのすべての値を選択します.
したがって,特に反復文,配列などの選択に有用である.
document.querySelector All(「p」)[0]/pラベルから0番目のインデックスを選択します.
//querySelectorAll
const nav = document.querySelectorAll('nav')
for(let i = 0; i <nav.length;i++){
nav[i].addEventListener('click',function(){
if(nav[i].style.color = 'black'){
nav[i].style.color = 'pink'
}
})
}
これにより、navのクエリーセレクタを選択するたびに、フォントの色がピンクに変わります.使えますが、最近はあまり使われていないので、主にクエリーセレクタとして使われているようです.
理由はわかりませんが大勢について行きましょうー!
update
さっきcreateElementで作成したaddpに戻りましょう.
const addP = document.createElement('p');
addP.textContent = 'footer-2'
footer.appendChild(addP)
退屈なpラベルにクラス名を指定する
addP.classList.add('addP')
classの名前はよく書けています.
id、name、disabledなどの他のプロパティを追加することもできます.
addP.setAttribute('id','addP')
addP.setAttribute('name','addP')
delete
domから値を削除する場合はremoveメソッドを使用します.
innerHTML=""削除する方法もありますが、ハッカーが出てくると答えが出なくなります…?安全上の問題があるのでremove/removeChildの使用を強くお勧めします!勉強する
さっき作成したクラス名addpを削除します.
addP.classList.remove('addP')
classが消えているのが見えます.
ではremoveChildとは何でしょうか.
removeChildとは、サブエレメントを直接指定して削除し、Web上に表示する場合はremoveと同じですが、実際のメモリはクリアされず、空に浮いている状態です.
したがって、removeChildとして削除し、appendまたはprependを使用して他のノードに貼り付けると、データが再び表示されます!
Reference
この問題について([ 06.01 ] DOM - CRUD), 我々は、より多くの情報をここで見つけました https://velog.io/@22soook00/06.01-DOM-CRUDテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol