本篇介紹用法
document.querySelector
document.querySelectorAll
document.getElementById
getElementsByName
.setAttribute
.getAttribute
.value
.type
.src
.textContent
.innerHTML
.addeventListener
e.target.nodeName
得知目前點選的節點名稱.onclick
.mouseover
document.querySelector()
→ 選擇網頁上的元素透過組合 HTML 標籤與 class name 的方式取得指定的所有 HTML 元素中的第一個,若無則回傳 null
練習:抓到整個結構
const el = document.querySelector('h1');
// 宣告一個 const 叫 el 賦予 dom的節點(原本是賦予 型別 或是 物件,也可以dom 的節點),
// document 是本身瀏覽器一打開就會產生一個 document 的文件資料,
// 可以借有這樣讀取dom產生的物件格式去抓取其中的標籤 .querySelector(' '),在小括號內可以使用各種選擇器
// 只會去抓網頁裡面的第一個 dom ,也就是說假設有很多 h1,他只會抓第一個。
document.querySelectorAll()
→ 重複選取多個元素上圖)抓取到兩個 a 連結,所以會回傳陣列[a, a]
document.getElementById
→要獲取綁定 Id 的元素,可以使用getElementById
var element = document.getElementById(id);
使用方式如下:
HTML:
<button id="addTodo" type="button">新增</button>
JavaScript:
// 透過 getElementById 獲取 id 為 addTodo 的元素
const addTodo = document.getElementById('addTodo');
getElementsByName()
→.getElementsByClassName
取得特定 class名稱用法:
document.getElementsByClassName(names)
.setAttribute("要更改的屬性","更改內容");
<a href="#"></a>
//先透過 querySelector 選取 a Element
const myLink = document.querySelector('a');
//設定該 Element 的 href 屬性
myLink.setAttribute("href","https://www.hexschool.com");
//設定該 Element 的 class 屬性
myLink.setAttribute("class","red");
.getAttribute("要取出內容的屬性")
//先透過 querySelector 選取 a Element
const myLink = document.querySelector('a');
//取出該 Element 的 href 屬性
console.log(myLink.getAttribute("href"));//"https://www.hexschool.com"
//取出該 Element 的 class 屬性
console.log(myLink.getAttribute("class"));//"red"
style
加入 filter
button.addEventListener("click", () => {
picture.setAttribute("style","filter: grayscale(80%)");
button.setAttribute("style","filter: grayscale(80%)");
});
.value
<input type="text" class="txt" value="你好棒!">
//先透過 querySelector 選取 class txt
const txt = document.querySelector(".txt");
console.log(txt.value)
//你好棒!
txt.value = "大家都很棒!";
// 透過賦予改變原本 value 的內容
.type
src
圖片網址
const amimalImage = document.querySelector('.amimalImage').src; // 圖片網址
選擇到節點後,使用 以下方法
動態修改 html 內容
Node.textContent
//使用 querySelector 選取到 h1 Element
const el = document.querySelector('h1');
// 針對該 h1 元素 Element 去賦予文字內容
el.textContent = "Hello World";
.innerHTML
→ 插入一段程式碼
//使用 querySelector 選取到 class
const list = document.querySelector('.list');
let myLink = "https://www.hexschool.com/";
let content = `<li><a href="${myLink}">連結</a></li>`;
//針對該 class 內去增加網頁的結構,亦可包含變數
list.innerHTML = content ;
.addEventListener
.addEventListener('監聽動作', function(e){ ... })
e.target.nodeName
e.target
會指向目前選取到的 DOM 物件
e
為 .addeventListener('監聽動作', function(e){ ... })
中 function
的 e
HTML:
<ul class="list">
<li>內文</li>
<li>內文<button type="button">按鈕</button></li>
<li>內文</li>
</ul>
JavaScript:
//先透過 querySelector 選取 class list
const list = document.querySelector(".list");
//監聽剛剛設定的 list 裡,點擊就會執行大括號的內容
list.addEventListener("click", function (e) {
//大括號內容: 監聽使用者的點擊到的是否為 <button></button> 按鈕
if (e.target.nodeName === "BUTTON") {
console.log("123");
}
});
JS
參考:
HTMLCollection 以及 NodeList ,兩個都是 Collection of DOM Nodes ,那到底差在哪呢?