[モダンJavaScript]38~39章DOM
22233 ワード
追加を続行...
要素ノードの取得
idを使用してノードを取得する
タグ名を使用したノードの取得
クラス名を使用したノードの取得
class名を持つ要素が存在しない場合は、空のHTML Collectionオブジェクトを返します.
cssセレクタを使用してノードを取得する
要素ノード取得での結論
documnet.QuerySelector All(「cssセレクタ」)
document.QuerySelector(「cssセレクタ」)
document.getElementById(「idツリー値」)
三つに統一したほうがいい.
/24579142まで使用した方が良いとはいえ、これも問題があります.
原則としてidは1つしかありません.
今は問題ですか?そう言えますが、inputタグの間に複数行のコードがある場合は?誤りは探しにくい.
特定の要素ノードを取得できることを確認します
委任イベントの使用
Element.prototype.matches
n個以上の変更が必要な場合は?
このようにすると、DOMの変更回数はn回を超え、リフレッシュとリフレッシュはパフォーマンスに影響します.
🗣ソリューションDocument.prototype.createDocumentFragment
appendChildは最後のサブノードとして追加できます.
指定した場所にノードを挿入する場合は、「Node」をクリックします.prototype.insertBefore(newNode,childNode)を使用すると、パラメータが入力されたchilNodeの上部にノードを追加できます.
調査する
html要素には複数の属性があります.です.現在、inputには2つのクエリー(id、type)が存在するため、2つのクエリーノードが生成されます.
要素ノードの取得
idを使用してノードを取得する
document.getElementBId('id이름')
<body>
<ul>
<li id="apple">apple</li>
<li id="banana">banana</li>
<li id="orange">orange</li>
</ul>
<script>
const $elem = document.getElementById('banana');
$elem.style.color = 'red';
</script>
getElementBidでないidを検索するとnullが返されます.タグ名を使用したノードの取得
document.getElementsByTagName('태그이름');
<body>
<ul>
<li id="apple">apple</li>
<li id="banana">banana</li>
<li id="orange">orange</li>
</ul>
<script>
const $elem = document.getElementById('li');
// $elem.style.color = 'red'; => 색 변경 불가
[...$elem].forEach(elem=> {elem.style.color='red';});
</script>
getElementById(")は、HTML Collectionオブジェクトを返します.HTML Collectionオブジェクトを配列に変換して巡回し、色のプロパティ値を変更します.クラス名を使用したノードの取得
document.getElementsByClassName('class 이름')
<ul>
<li class="fruit apple">apple</li>
<li class="fruit banana">banana</li>
<li class="fruit orange">orange</li>
</ul>
<script>
const $elem = document.getElementsByClassName('fruit');
[...$elem].forEach(elem => {
elem.style.color = 'red';
});
</script>
「fruit」クラスの要素の色が変わります.class名を持つ要素が存在しない場合は、空のHTML Collectionオブジェクトを返します.
cssセレクタを使用してノードを取得する
* { ... }
/* 전체 선택자 : 모든 요소를 선택*/
#foo { ... }
/* id가 foo 인 요소를 선택
パラメータとして渡されるcssセレクタを満たす要素が複数ある場合は、最初の要素ノードのみが返されます. <ul>
<li class="fruit apple">apple</li>
<li class="fruit banana">banana</li>
<li class="fruit orange">orange</li>
</ul>
<script>
const $elem = document.querySelector('.fruit');
$elem.style.color = 'blue';
</script>
▲フルーツグレードを持つ要素のうち、最初の要素(apple)だけが色を変える.要素ノード取得での結論
documnet.QuerySelector All(「cssセレクタ」)
document.QuerySelector(「cssセレクタ」)
document.getElementById(「idツリー値」)
三つに統一したほうがいい.
/24579142まで使用した方が良いとはいえ、これも問題があります.
原則としてidは1つしかありません.
<input type="text" id="input-tag" value="html" placeholder="enter todo !" />
<input type="text" id="input-tag" value="html" placeholder="enter your job !" />
同じidが2つあってもエラーは発生しませんが、後ろのinputラベルのidを考慮して使用すると、上のidが選択されます.今は問題ですか?そう言えますが、inputタグの間に複数行のコードがある場合は?誤りは探しにくい.
document.getElementById
は、NodeListという類似の配列で複数を返す.特定の要素ノードを取得できることを確認します
委任イベントの使用
Element.prototype.matches
<body>
<ul>
<li class="fruit apple">apple</li>
<li class="fruit banana">banana</li>
<li class="fruit orange">orange</li>
</ul>
<script>
const $elem = document.querySelector('.fruit');
console.log($elem.matches('li.orange')); //true
console.log($elem.matches('grape')); //false
</script>
ノードの作成と追加n個以上の変更が必要な場合は?
このようにすると、DOMの変更回数はn回を超え、リフレッシュとリフレッシュはパフォーマンスに影響します.
🗣ソリューションDocument.prototype.createDocumentFragment
<body>
<ul id="fruit"></ul>
<script>
const $fruit = document.getElementById('fruit');
const $fragment = document.createDocumentFragment();
['apple', 'banana', 'grape'].forEach(item => {
const $li = document.createElement('li');
$li.appendChild(document.createTextNode(item));
$fragment.appendChild($li);
});
$fruit.appendChild($fragment);
</script>
DocumentFragmentでノードを追加し、一度にDOMにノードを追加するため、リフレッシュとリフレッシュは一度だけ実行されます.appendChildは最後のサブノードとして追加できます.
指定した場所にノードを挿入する場合は、「Node」をクリックします.prototype.insertBefore(newNode,childNode)を使用すると、パラメータが入力されたchilNodeの上部にノードを追加できます.
調査する
html要素には複数の属性があります.
querySelectorAll
たとえば、Reference
この問題について([モダンJavaScript]38~39章DOM), 我々は、より多くの情報をここで見つけました https://velog.io/@mingsomm/모던자바스크립트-3839장-DOMテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol