documnet Elemnet : <a></a> Attribute : "href" Text : <a>mylink</a> (mylink)2.網頁解析由上而下
<script>javascript 語法</script> JS建議放於網頁下面等DOM解析完成使用才不會有問題3.querySelector(選取第一個符合元素)(沒符合null)
<h1 class="header">1234</h1> <script> const el = document.querySelector('.header'); console.log(el);//<h1 class="header">1234</h1> </script> <div class="targetBElementP"> <p>請選取我</p> </div> <script> //取得child const targetBElementP = document.querySelector(".targetBElementP > p"); </script> //以下較舊可不使用 getElementsByClassName('.class'); getElementsByTagName('tag'); getElementById('#id');4.元素加入HTML或文字(innerHTML刪除內容後再加入)
<main>123</main> <script> const main = document.querySelector('main'); main.innerHTML =`<h1>546</h1>`;//加入html標籤 const h1 = document.querySelector('h1'); console.log(h1);//<h1>456</h1> </script>5.元素插入html或文字(prepend、append、appendChild)
<ul> <li>hihi</li> </ul> <script> const ul = document.querySelector('ul'); const liappendChild = document.createElement('li'); liappendChild.textContent = "我是appendChild加入的我會新增在後面"; ul.appendChild(liappendChild); const liprepend = document.createElement('li'); liprepend.textContent = "我是prepend加入的我會新增在最前面"; ul.prepend(liprepend); const liappend = document.createElement('li'); liappend.textContent = "我是aappend加入的我會新增在後面"; ul.append(liappend); </script>6.innerHTML、textContent差異
<main></main> <script> const main = document.querySelector('main'); main.innerHTML =`<h1>123</h1>`;//html標籤 main.textContent=`<h1>123</h1>`;//會是文字 </script>7.setAttribute加入屬性,getAttribute取得屬性,innerHTML取得html,textContent取得文字
<a></a> <script> const myLink = document.querySelector('a'); myLink.innerHTML = "<span>Google</sapn>"; //設定Attribute myLink.setAttribute("href", "https://www.google.com"); myLink.setAttribute("target", "_blank"); //取出設定Attribute console.log(myLink.getAttribute("href"));//https://www.google.com console.log(myLink.getAttribute("target"));//_blank console.log(myLink.innerHTML);//<span>Google</span> console.log(myLink.textContent);//google </script>8.querySelectorAll,回傳NodeList陣列(沒符合null)
<a>Google</a> <a>Yahoo</a> <script> const myLinks = document.querySelectorAll('a');//會回傳NodeList陣列 console.log(myLinks); myLinks[0].setAttribute("href", "https://www.google.com"); myLinks[1].setAttribute("href", "https://tw.yahoo.com"); </script>9.表單元素取值、賦值
<input type="text" class="txt" value="早安" /> <select class="list"> <option value="1">1</option> <option value="2">2</option> </select> <script> const txt = document.querySelector('.txt'); console.log(txt.value);//早安 txt.value = "晚安"; //賦值 console.log(txt.value);//晚安 const list = document.querySelector('.list'); console.log(list);//<select class="list"><option value="1">1</option><option value="2">2</option></select> console.log(list.value);//1 list.value = 2; //賦值 console.log(list.value);//2 </script>10.addEventListener註冊監聽事件
是否有註冊監聽,chrome > F12 > 元素上檢查 > Even Listeners
<ul class="list"> <li><span>hihi</span></li> <li>hihi <input type="button" value="按鈕" class="btn"></li> </ul> <h1></h1> <script> const btn = document.querySelector('.list'); //const btn = document.querySelector('.btn'); const h1 = document.querySelector('h1'); let count = 0; btn.addEventListener('click', function (e) { if (e.target.nodeName == "INPUT") { //btn.addEventListener('click', function (e) { count++; h1.textContent = `手速測試,您點擊了${count}次`; } else { console.log(e);//捕捉當下元素資訊 console.log(e.clientX); console.log(btn.nodeName);//INPUT 目前的元素tag console.log(e.target);//偵測到目前點擊是哪個元素 console.log(e.target.nodeName);//INPUT console.log(e.target.innerHTML); console.log(e.target.textContent); h1.textContent = `點到${e.target.nodeName}`; } }); </script>11.preventDefault取消預設觸發行為
<a href="http://tw.yahoo.com">yahoo</a> <script> const myLink = document.querySelector('a'); myLink.addEventListener('click', function (e) { e.preventDefault(); console.log('有點點到,但不會轉址'); }); </script>參考資料
六角學院直播課
你需要注意的 console.log 問題