JavaScript Web APIs(一)

94 阅读1分钟

DOM

Document Object Model 通过document获取网页文档

console.log(document);
console.log(window.document);

通过document操作元素

<button id="btn">Click</button>

<script>
  // 通过标签id获取元素
  const btn = document.getElementById('btn');
</script>

文档节点

document.documentElement; // <html>
document.title; // <title>
document.head; // <head>
document.body; // <body>
document.links; // 获取所有链接

元素节点

<button id="btn" class="b"></button>
<input type="text" name="username">

<script>
  // 可以实时获取(双向绑定)
  document.getElementById('btn');
  document.getElementsByClassName('b');
  document.getElementsByTagName('button');
  document.getElementsByName('username');
  // 不可以实时获取
  document.querySelectorAll('#btn'); // 通过选择器获取元素节点
  document.querySelector('.b'); // 获取第一个
</script>
<div id="d">
  <span>1</span>
  <span>2</span>
</div>

<script>
  const d = document.getElementById('d');
  d.childNodes; //子节点(包括元素、文本节点)
  d.children; // 子元素节点
  const s1 = d.firstElementChild; // <span>1</span>
  const s2 = s1.nextElementSibling; // <span>2</span>
  const s3 = d.lastElementChild; // <span>2</span>
  const s4 = s3.previousElementSibling; // <span>1</span>
  const t = s3.tagName; // span
</script>

文本节点

<div id="d">
  文本节点1
  <span>1</span>
  <span>2</span>
</div>

<script>
  const d = document.getElementById('d');
  const t1 = d.firstChild; // 文本节点1
  const e1 = t1.nextSibling; // <span>1</span>
  const t2 = e1.nextSibling; // (文本节点2: \n)
  const e2 = t2.nextSibling; // <span>2</span>
  const t3 = e2.nextSibling; // (文本节点3: \n)

  const text1 = d.innerText; // '文本节点1 1 2'
  const text2 = d.textContent; // '\n    文本节点1\n    1\n    2\n'
  d.innerHTML('修改HTML代码');
</script>

属性节点

<input type="text" id="u" class="i" name="username">

<script>
  const e = document.getElementById('u');
  e.type; // text
  e.className; // i
  e.name; // username
  
  e.getAttribute('type'); // text
  e.getAttribute('class'); // i
  e.getAttribute('name'); // username
  e.setAttribute('disabled', 'disabled');
  e.removeAttribute('disabled');
</script>

修改元素

<ul>
  <li>1</li>
  <li>2</li>
</ul>

<script>
  const list = document.getElementsByTagName('ul')[0];
  const li = document.createElement('li');
  li.textContent = '3';
  list.appendChild(li); // 追加子元素
  li.replaceWith(li); // 替换元素
  li.remove(); // 删除元素

  // 插入元素
  list.insertAdjacentElement('beforebegin', li); // 起始标签前
  list.insertAdjacentElement('afterbegin', li); // 起始标签后
  list.insertAdjacentElement('beforeend', li); // 结束标签前
  list.insertAdjacentElement('afterend', li); // 结束标签后
</script>

节点复制

<ul>
  <li>1</li>
</ul>

<script>
  const list = document.getElementsByTagName('ul')[0];
  const li = list.firstElementChild;
  const li2 = li.cloneNode(true); // true 同时复制子节点
  li2.textContent = '2';
  list.appendChild(li2);
</script>