Python全棧之學習JS(3)
1. dom節點
1.1 dom節點獲取
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>DOM document object model 文檔頂級節點</title> </head> <body> <div id="box"> <p class="p1" >張三</p> <p class="p2">李四</p> <p class="p3">趙劉</p> <p name="ceshi1"></p> <p name="ceshi1"></p> </div> <div> <input type="text" name="username" /> <input type="password" name="pwd" /> <p1>112233</p1> <box>55666</box> </div> <script> console.log(document) // ### 1 通過id獲取div節點對象 var box = document.getElementById("box"); console.log(box); // ### 2 通過類名獲取節點對象 [返回的是數組] var p2 = document.getElementsByClassName("p2"); console.log(p2 , typeof(p2)); // 獲取李四節點對象 lisi = p2[0]; console.log(lisi) // 獲取王五節點對象 wangwu = p2[1]; console.log(wangwu); // ### 3.通過標簽獲取節點對象 [返回的是數組] var p = document.getElementsByTagName("p"); console.log(p) console.log(p[1]) // ### 4.通過標簽身上的name屬性 [返回的是數組] 一般用在input表單中 var ceshi1 = document.getElementsByName("username")[0]; console.log(ceshi1); // ### 通過css選擇器獲取對應的元素節點 // ### 5.querySelector ,隻獲取找到的第一個; var p1 = document.querySelector(".p1"); console.log(p1) var box = document.querySelector("#box"); console.log(box) // input表單有兩個,但是隻獲取第一個; var input = document.querySelector("input"); console.log(input); // ### 6.querySelectorAll 獲取所有找到的元素節點,返回數組 var all = document.querySelectorAll("input[name=username]")[0]; console.log(all); </script> </body> </html>
1.2 節點元素層級關系
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>節點元素層級關系</title> </head> <body> <div id="box"> <p> <input type="text" name="username" /> <input type="password" name="pwd" /> </p> <p class="p1" >張三</p> <p class="p2">李四</p> <p class="p3">趙劉</p> <p name="ceshi1"></p> <p name="ceshi1"></p> </div> <script> // ### 獲取對應的節點元素 console.log(document) console.log(document.documentElement); // html console.log(document.documentElement.children) // 找html裡面所有的子節點children var html_children = document.documentElement.children console.log(html_children) // head , body body = html_children[1]; console.log(body); // head , body var div = body.children[0] console.log(div); var p0 = div.children[0] console.log(p0) var input = p0.children console.log(input) var input1 = input[0] console.log(input1) // 獲取下一個節點對象nextSibling console.log(input1.nextSibling.nextSibling); // 獲取下一個元素節點對象 nextElementSibling var input2 = input1.nextElementSibling; console.log(input2); // 獲取上一個節點對象 previousSibling console.log(input2.previousSibling) // 獲取上一個元素節點對象 previousElementSibling console.log(input2.previousElementSibling) // 獲取input2父節點元素對象; console.log(input2.parentElement) </script> </body> </html>
1.3 修改_清空內容
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>DOM 修改/清空內容</title> </head> <body> <button onclick="func1()">修改內容</button> <button onclick="func2()">清空內容</button> <div id="box" style="border:solid 1px red;"> <p>我是最帥的最有錢的<a href="#">最有味的</a>男人</p> </div> <script> // innerHTML 獲取標簽裡面所有內容 [標簽 + 文本] // innerText 獲取標簽裡面所有字符串[文本] var p = document.querySelector("#box p"); // console.log把數據展現在控制臺 console.log(p); // document.write 把數據以字符串的形式展現在瀏覽器 document.write(p); // 點擊button1觸發如下任務 , 修改 function func1(){ var content = p.innerHTML; var content = p.innerText; console.log(content); // p.innerHTML = `我被修改瞭 <a href=''>點我中大獎</a>...1`; p.innerText = `我被修改瞭 <a href=''>點我中大獎</a>...2`; } // 點擊button2觸發如下任務 , 清空 function func2(){ p.innerHTML = ''; } </script> </body> </html>
1.4 隱藏顯示密碼效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>隱藏顯示密碼效果</title> </head> <body> <input type="password" name="pwd" value="111" class="abcd" /> <button onclick="change()" id="btn" >點我顯示密碼</button> <div> <img src="images/oneal1.jpg" /> </div> <script> // 效果1: 顯示隱藏密碼 var password = document.querySelector("input[name=pwd]") console.log(password); console.log(password.type); console.log(password.name); console.log(password.value); console.log(password.className) function change(){ var btn = document.querySelector("#btn") console.log(btn); if(password.type=="password"){ password.type = "text"; btn.innerHTML = "點我隱藏密碼"; }else{ password.type= "password"; btn.innerHTML = "點我顯示密碼"; } } // 效果2:點擊換圖片 var img = document.querySelector("img"); console.log(img) img.onclick = function(){ console.log(img.src) // http://127.0.0.1:5500/images/oneal1.jpg var arr = img.src.split("/") imgname = arr[arr.length - 1] console.log(arr , imgname); if(imgname == "oneal1.jpg"){ img.src = "images/bakeli.jpg"; }else{ img.src = "images/oneal1.jpg"; } } </script> </body> </html>![請添加圖片描述](https://img-blog.csdnimg.cn/28488ad590884492b9b9aabe1e7eeada.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54as5aSc5rOh5p645p2e,size_20,color_FFFFFF,t_70,g_se,x_16)
2. 全選_反選_不選
2.1 全選_反選_不選
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>全選,反選,不選</title> <style> * {margin:0px;padding:0px;} ul {list-style: none;} #ul1 li {float:left;} #ul1 li button {width:80px;height:30px;} #ul1 li button:hover {background-color: tan;} #ul2 {clear:both;} </style> </head> <body> <ul id="ul1"> <li><button>全選</button></li> <li><button>不選</button></li> <li><button>反選</button></li> </ul> <ul id="ul2"> <li><input type="checkbox" /> 看電影 </li> <li><input type="checkbox" /> 吃面 </li> <li><input type="checkbox" /> 燙頭 </li> <li><input type="checkbox" /> 跑步 </li> <li><input type="checkbox" /> 籃球 </li> </ul> <script> // 獲取btn節點對象 var btn1 = document.querySelector("#ul1 li:nth-child(1) button"); var btn2 = document.querySelector("#ul1 li:nth-child(2) button"); var btn3 = document.querySelector("#ul1 li:nth-child(3) button"); // 全選 btn1.onclick = function(){ // 獲取#ul2 li 裡的input /* var data_lst = document.getElementById("ul2").getElementsByTagName("input"); console.log(data_lst) */ var data_lst = document.querySelectorAll("#ul2 li input"); console.log(data_lst) // 獲取數組當中每一個input節點元素對象 for(var input of data_lst){ //console.log(input.checked) // 設置節點input的checked屬性為true; input.checked = true; } } // 不選 btn2.onclick = function(){ var data_lst = document.querySelectorAll("#ul2 li input"); console.log(data_lst) // 獲取數組當中每一個input節點元素對象 for(var input of data_lst){ //console.log(input.checked) // 設置節點input的checked屬性為true; input.checked = false; } } // 反選 btn3.onclick = function(){ var data_lst = document.querySelectorAll("#ul2 li input"); console.log(data_lst) // 獲取數組當中每一個input節點元素對象 for(var input of data_lst){ if(input.checked === true){ input.checked = false; }else{ input.checked = true; } } } </script> </body> </html>
2.2 js控制css的相關屬性
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>js控制css的相關屬性</title> <style> .box {border:solid 1px red;} .box_new {position: absolute; left:200px;} </style> </head> <body> <button id="box1">點擊我換顏色</button> <button id="box2">點擊我隱藏</button> <button id="box3">點擊我顯示</button> <button id="box4">點擊邊框換圓角</button> <button id="box5">點擊加樣式</button> <div class="box" style="width:300px;height:200px;background-color: yellow;font-size:40px;">你好評</div> <script> var box = document.querySelector(".box"); console.log(box); // js的dom對象獲取相關的css屬性 // 獲取方法一 console.log(box.style.width); console.log(box.style.backgroundColor); // 獲取方法二 console.log(box.style["width"]); console.log(box.style["background-color"]); console.log(box.style["font-size"]); // 獲取方法三 getComputedStyle 獲取該節點對象的所有樣式 console.log( window.getComputedStyle(box)["font-size"] , "<===getComputedStyle===>"); console.log( window.getComputedStyle(box).fontSize , "<===getComputedStyle===>"); // 事件綁定 var box1 = document.getElementById("box1"); var box2 = document.getElementById("box2"); var box3 = document.getElementById("box3"); var box4 = document.getElementById("box4"); var box5 = document.getElementById("box5"); box1.onclick = function(){ box.style.backgroundColor = "red"; } box2.onclick = function(){ box.style.display = "none"; } box3.onclick = function(){ box.style.display = "block"; } box4.onclick = function(){ //box.style.borderRadius = "100%"; var point = 0; var t = setInterval( function(){ box.style.borderRadius = `${point}%`; if(point < 100){ point++; }else{ clearInterval(t) console.log("結束瞭... ") } } , 50) } /* 重點 添加樣式*/ box5.onclick = function(){ // box.className = "box box_new"; box.className += " box_new"; } </script> </body> </html>
2.3 js事件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>js事件</title> <style> *{margin:0px;padding:0px;} .box {width:100px;height:100px;background: green;position: absolute;left:0px;} </style> </head> <body> <!-- 1.事件的靜態綁定 --> <button onclick="func1()">按鈕1</button> <div class="box"></div> <script> var box = document.getElementsByClassName("box")[0]; var t; console.log(box); function func1(){ var left = parseInt(window.getComputedStyle(box).left) console.log(left ,typeof(left)); // console.log(box.style.left); t = setInterval(function(){ left += 10; box.style.left = `${left}px`; } , 50) } // 2.事件的動態綁定 // onmouseover 鼠標指針懸停在指定元素上時觸發 box.onmouseover = function(){ clearInterval(t); } // onmouseout 鼠標指針離開指定元素時觸發 box.onmouseout = function(){ func1() } </script> </body> </html>
3. 模態框
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>模態框</title> <style> .box { position:fixed; width:100%; height:100%; top:0px; background-color: greenyellow; display: none; } .content { border:solid 1px red; width:500px; height:500px; background-color:tan; margin:auto; margin-top:14%; } </style> </head> <body> <button id="login">登錄</button> <div class="box"> <div class="content" > <span class="close">X</span> <br /> <span>賬號: <input type="text" /></span> <br / > <span>密碼: <input type="password" /></span> </div> </div> <script> var btn = document.getElementById("login"); var box = document.querySelector(".box"); var close = document.querySelector(".close"); btn.onclick = function(){ console.log(11) box.style.display = "block"; } close.onclick = function(){ box.style.display = "none"; } </script> </body> </html>