JavaScript基础视频教程总结(101-110章)

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>101-110章总结</title>
  6. <link rel="stylesheet" type="text/css" href="css/base.css"/>
  7. <link rel="stylesheet" type="text/css" href="css/css.css"/>
  8. </head>
  9. <body>
  10. <pre>
  11. 101. dom查询的剩余方法
  12. </pre>
  13. <div id="box2"></div>
  14. <div class="box1">我是第一个box1<div>我是box1中的div</div></div>
  15. <div class="box1"><div>我是box1中的div</div></div>
  16. <div class="box1"><div>我是box1中的div</div></div>
  17. <div class="box1"><div>我是box1中的div</div></div>
  18. <div></div>
  19. <script type="text/javascript">
  20. console.log("--101--")
  21. function fun101(){
  22. //body
  23. console.log("--body--")
  24. var body1 = document.getElementsByTagName("body")[0]
  25. var body2 = document.body
  26. console.log(body1)
  27. console.log(body2)
  28. // html
  29. console.log("--html--")
  30. var html = document.documentElement
  31. console.log(html)
  32. // all
  33. console.log("--all--")
  34. var all = document.all
  35. console.log(all.length)
  36. for ( var i=0 , allL = all.length ; i<allL; i++) {
  37. console.log(all[i])
  38. }
  39. /*
  40. * 根据元素的class属性值查询一组元素节点对象
  41. * getElementsByClassName()可以根据class属性值获取一组元素节点对象,
  42. * 但是该方法不支持IE8及以下的浏览器
  43. */
  44. // class
  45. console.log("--getElementsByClassName--")
  46. var box1 = document.getElementsByClassName("box1")
  47. console.log(box1.length)
  48. //获取页面中的所有的div
  49. console.log("--div--")
  50. var divs = document.getElementsByTagName("div")
  51. console.log(divs.length)
  52. /*
  53. * document.querySelector()
  54. * - 需要一个选择器的字符串作为参数,可以根据一个CSS选择器来查询一个元素节点对象
  55. * - 虽然IE8中没有 getElementsByClassName()但是可以使用querySelector()代替
  56. * - 使用该方法总会返回唯一的一个元素,如果满足条件的元素有多个,那么它只会返回第一个
  57. */
  58. console.log("--querySelector--")
  59. var qbox1 = document.querySelector(".box1")
  60. console.log(qbox1)
  61. /*
  62. * document.querySelectorAll()
  63. * - 该方法和querySelector()用法类似,不同的是它会将符合条件的元素封装到一个数组中返回
  64. * - 即使符合条件的元素只有一个,它也会返回数组
  65. */
  66. console.log("--querySelectorAll--")
  67. var qabox1 = document.querySelectorAll(".box1")
  68. console.log(qabox1.length)
  69. }
  70. fun101()
  71. </script>
  72. <pre>
  73. 102. dom增删改
  74. </pre>
  75. <div class="clearfix">
  76. <div id="total">
  77. <div class="inner">
  78. <p>你喜欢哪个城市?</p>
  79. <ul id="city">
  80. <li id="bj">北京</li>
  81. <li id="sh">上海</li>
  82. <li>东京</li>
  83. <li>首尔</li>
  84. </ul>
  85. </div>
  86. </div>
  87. <div id="btnList">
  88. <div><button id="btn01">创建一个"广州"节点,添加到#city</button></div>
  89. <div><button id="btn02">"广州"节点插入到#bj前面</button></div>
  90. <div><button id="btn03">使用"广州"节点替换#bj节点</button></div>
  91. <div><button id="btn04">删除#bj#sh节点</button></div>
  92. <div><button id="btn05">读取#city内的HTML代码</button></div>
  93. <div><button id="btn06">设置#bj内的HTML代码</button></div>
  94. <div><button id="btn07">创建一个"广州""合肥"节点,添加到#city</button></div>
  95. </div>
  96. </div>
  97. <script type="text/javascript">
  98. console.log("--102--");
  99. myClick("btn01",function(){
  100. var newLi = document.createElement("li")
  101. var nliText = document.createTextNode("广州")
  102. newLi.appendChild(nliText)
  103. var city = document.getElementById("city")
  104. city.appendChild(newLi)
  105. })
  106. myClick("btn02",function(){
  107. var newLi = document.createElement("li")
  108. var nliText = document.createTextNode("广州")
  109. newLi.appendChild(nliText)
  110. var city = document.getElementById("city")
  111. var bj = document.getElementById("bj")
  112. /*
  113. * insertBefore()
  114. * - 可以在指定的子节点前插入新的子节点
  115. * - 语法:
  116. * 父节点.insertBefore(新节点,旧节点);
  117. */
  118. city.insertBefore(newLi,bj)
  119. })
  120. myClick("btn03",function(){
  121. var newLi = document.createElement("li")
  122. var nliText = document.createTextNode("广州")
  123. newLi.appendChild(nliText)
  124. var city = document.getElementById("city")
  125. var bj = document.getElementById("bj")
  126. /*
  127. * replaceChild()
  128. * - 可以使用指定的子节点替换已有的子节点
  129. * - 语法:父节点.replaceChild(新节点,旧节点);
  130. */
  131. city.replaceChild(newLi,bj)
  132. })
  133. myClick("btn04",function(){
  134. var city = document.getElementById("city")
  135. var bj = document.getElementById("bj")
  136. var sh = document.getElementById("sh")
  137. /*
  138. * removeChild()
  139. * - 可以删除一个子节点
  140. * - 语法:父节点.removeChild(子节点);
  141. * 子节点.parentNode.removeChild(子节点);
  142. */
  143. city.removeChild(bj)
  144. sh.parentNode.removeChild(sh)
  145. })
  146. myClick("btn05",function(){
  147. var city = document.getElementById("city")
  148. alert(city.innerHTML)
  149. })
  150. myClick("btn06",function(){
  151. var bj = document.getElementById("bj")
  152. bj.innerHTML = "合肥"
  153. })
  154. myClick("btn07",function(){
  155. var city = document.getElementById("city")
  156. // 使用innerHTML也可以完成DOM的增删改的相关操作,一般我们会两种方式结合使用
  157. //01
  158. city.innerHTML += "<li>广州</li>"
  159. //02
  160. var li =document.createElement("li")
  161. li.innerHTML = "合肥"
  162. city.appendChild(li)
  163. })
  164. function myClick(btn,fun){
  165. var btn = document.getElementById(btn)
  166. btn.onclick = fun
  167. }
  168. </script>
  169. <pre>
  170. 103. 添加删除记录-删除
  171. </pre>
  172. <pre>
  173. 104. 添加删除记录-添加
  174. </pre>
  175. <pre>
  176. 105. 添加删除记录-修改
  177. </pre>
  178. <table id="employeeTable">
  179. <tr>
  180. <th>Name</th>
  181. <th>Email</th>
  182. <th>Salary</th>
  183. <th>&nbsp;</th>
  184. </tr>
  185. <tr>
  186. <td>Tom</td>
  187. <td>tom@tom.com</td>
  188. <td>5000</td>
  189. <td><a href="javascript:;">Delete</a></td>
  190. </tr>
  191. <tr>
  192. <td>Jerry</td>
  193. <td>jerry@sohu.com</td>
  194. <td>8000</td>
  195. <td><a href="javascript:;">Delete</a></td>
  196. </tr>
  197. <tr>
  198. <td>Bob</td>
  199. <td>bob@tom.com</td>
  200. <td>10000</td>
  201. <td><a href="javascript:;">Delete</a></td>
  202. </tr>
  203. </table>
  204. <div id="formDiv">
  205. <h4>添加新员工</h4>
  206. <table>
  207. <tr>
  208. <td class="word">name: </td>
  209. <td class="inp">
  210. <input type="text" name="empName" id="empName" />
  211. </td>
  212. </tr>
  213. <tr>
  214. <td class="word">email: </td>
  215. <td class="inp">
  216. <input type="text" name="email" id="email" />
  217. </td>
  218. </tr>
  219. <tr>
  220. <td class="word">salary: </td>
  221. <td class="inp">
  222. <input type="text" name="salary" id="salary" />
  223. </td>
  224. </tr>
  225. <tr>
  226. <td colspan="2" align="center">
  227. <button id="addEmpButton1" value="abc">Submit1</button>
  228. <button id="addEmpButton2" value="abc">Submit2</button>
  229. </td>
  230. </tr>
  231. </table>
  232. </div>
  233. <script type="text/javascript">
  234. console.log("--103,104,105--");
  235. function deleteA(){
  236. console.log(this)
  237. var tr = this.parentNode.parentNode;
  238. var name = tr.children[0].innerHTML
  239. var flag = confirm("你确定删除"+ name +"吗?")
  240. if(flag){
  241. tr.parentNode.removeChild(tr)
  242. }
  243. }
  244. // 删除
  245. function deleteFun(){
  246. var allA = document.querySelectorAll("td a")
  247. for(var i=0,l=allA.length; i<l; i++) {
  248. allA[i].onclick = deleteA
  249. }
  250. }
  251. deleteFun()
  252. // 添加
  253. function addFun(){
  254. var employeeTable = document.getElementById("employeeTable")
  255. var addEmpButton1 = document.getElementById("addEmpButton1")
  256. var addEmpButton2 = document.getElementById("addEmpButton2")
  257. addEmpButton1.onclick = function(){
  258. var empName = document.getElementById("empName").value
  259. var email = document.getElementById("email").value
  260. var salary = document.getElementById("salary").value
  261. var tr = document.createElement("tr")
  262. var tdName = document.createElement("td")
  263. var tdEmail = document.createElement("td")
  264. var tdSalary = document.createElement("td")
  265. var tdA = document.createElement("td")
  266. var a = document.createElement("a")
  267. var nameText = document.createTextNode(empName)
  268. var emailText = document.createTextNode(email)
  269. var salaryText = document.createTextNode(salary)
  270. var aText = document.createTextNode("Delete")
  271. tdName.appendChild(nameText)
  272. tdEmail.appendChild(emailText)
  273. tdSalary.appendChild(salaryText)
  274. tdA.appendChild(a)
  275. a.href = "javascript:;"
  276. a.onclick = deleteA
  277. a.appendChild(aText)
  278. tr.appendChild(tdName)
  279. tr.appendChild(tdEmail)
  280. tr.appendChild(tdSalary)
  281. tr.appendChild(tdA)
  282. employeeTable.appendChild(tr)
  283. }
  284. // 修改
  285. addEmpButton2.onclick = function(){
  286. var empName = document.getElementById("empName").value
  287. var email = document.getElementById("email").value
  288. var salary = document.getElementById("salary").value
  289. var tr2 = document.createElement("tr")
  290. tr2.innerHTML = "<td>" + empName + "</td>" +
  291. "<td>" + email + "</td>" +
  292. "<td>" + salary + "</td>" +
  293. "<td><a href='javascript:;'>Delete</a></td>"
  294. var a = tr2.getElementsByTagName("a")[0]
  295. a.onclick = deleteA
  296. employeeTable.appendChild(tr2)
  297. }
  298. }
  299. addFun()
  300. </script>
  301. <pre>
  302. 106. a的索引问题
  303. </pre>
  304. <ul id="ul_id">
  305. <li><a href="javascript:;">a的索引问题1</a></li>
  306. <li><a href="javascript:;">a的索引问题2</a></li>
  307. <li><a href="javascript:;">a的索引问题3</a></li>
  308. <li><a href="javascript:;">a的索引问题4</a></li>
  309. </ul>
  310. <script type="text/javascript">
  311. console.log("--106--");
  312. var ul = document.getElementById("ul_id")
  313. var liA = ul_id.getElementsByTagName("a")
  314. //console.log(liA.length)
  315. for (var i=0,l=liA.length; i<l; i++) {
  316. console.log("for循环正在执行"+i);
  317. liA[i].onclick = function(){
  318. console.log("响应函数正在执行"+i);
  319. }
  320. }
  321. </script>
  322. <pre>
  323. 107. 操作内联样式
  324. 通过JS修改元素的样式:语法:元素.style.样式名 = 样式值
  325. 注意:如果CSS的样式名中含有-,这种名称在JS中是不合法的比如background-color
  326. 需要将这种样式名修改为驼峰命名法,去掉-,然后将-后的字母大写
  327. 我们通过style属性设置的样式都是内联样式,而内联样式有较高的优先级,所以通过JS修改的样式往往会立即显示
  328. 但是如果在样式中写了!important,则此时样式会有最高的优先级,
  329. 即使通过JS也不能覆盖该样式,此时将会导致JS修改样式失效
  330. 所以尽量不要为样式添加 !important
  331. </pre>
  332. <style type="text/css">
  333. #p2{color: blue !important;}
  334. </style>
  335. <div class="">
  336. <p id="p1">段落01</p>
  337. <p id="p2">段落02</p>
  338. </div>
  339. <div class="">
  340. <button id="btncss01">点我一下</button>
  341. <button id="btncss02">点我一下2</button>
  342. </div>
  343. <script type="text/javascript">
  344. console.log("--107--");
  345. var btncss01 = document.getElementById("btncss01")
  346. var btncss02 = document.getElementById("btncss02")
  347. var p1 = document.getElementById("p1")
  348. var p2 = document.getElementById("p2")
  349. btncss01.onclick = function(){
  350. p1.style.color = "red"
  351. p1.style.backgroundColor = "yellow"
  352. p2.style.color = "red"
  353. }
  354. //点击按钮2以后,读取元素的样式
  355. // 通过style属性设置和读取的都是内联样式, 无法读取样式表中的样式
  356. btncss02.onclick = function(){
  357. alert(p1.style.color)
  358. }
  359. </script>
  360. <pre>
  361. 108. 获取元素的样式
  362. 获取元素的当前显示的样式
  363. 语法:元素.currentStyle.样式名
  364. 它可以用来读取当前元素正在显示的样式
  365. 如果当前元素没有设置该样式,则获取它的默认值
  366. currentStyle只有IE浏览器支持,其他的浏览器都不支持
  367. 在其他浏览器中可以使用
  368. getComputedStyle()这个方法来获取元素当前的样式
  369. 这个方法是window的方法,可以直接使用
  370. 需要两个参数
  371. 第一个:要获取样式的元素
  372. 第二个:可以传递一个伪元素,一般都传null
  373. 该方法会返回一个对象,对象中封装了当前元素对应的样式
  374. 可以通过对象.样式名来读取样式
  375. 如果获取的样式没有设置,则会获取到真实的值,而不是默认值
  376. 比如:没有设置width,它不会获取到auto,而是一个长度
  377. 但是该方法不支持IE8及以下的浏览器
  378. 通过currentStylegetComputedStyle()读取到的样式都是只读的,
  379. 不能修改,如果要修改必须通过style属性
  380. </pre>
  381. <style type="text/css">
  382. #p3{color: #5197ff;height: 30px;font-size: 20px;}
  383. #p4{color: #112233;height: 60px;font-size: 30px;}
  384. </style>
  385. <div class="">
  386. <p id="p3">段落01</p>
  387. <p id="p4">段落02</p>
  388. </div>
  389. <div class="">
  390. <button id="btncss03">点我一下</button>
  391. <button id="btncss04">点我一下</button>
  392. <button id="btncss05">点我一下</button>
  393. </div>
  394. <script type="text/javascript">
  395. console.log("--108--");
  396. var btncss03 = document.getElementById("btncss03")
  397. var btncss04 = document.getElementById("btncss04")
  398. var btncss05 = document.getElementById("btncss05")
  399. var p3 = document.getElementById("p3")
  400. var p4 = document.getElementById("p4")
  401. btncss03.onclick = function(){
  402. var p3Color = p3.currentStyle.color
  403. console.log( p3Color)
  404. }
  405. btncss04.onclick = function(){
  406. var obj = getComputedStyle(p4,null)
  407. console.log("p4= " + obj.color)
  408. console.log("p4= " + obj.fontSize)
  409. }
  410. </script>
  411. <pre>
  412. 109. getStyle()方法
  413. </pre>
  414. <script type="text/javascript">
  415. console.log("--109--");
  416. function getStyle(obj,name){
  417. if(window.getComputedStyle){
  418. //正常浏览器的方式,具有getComputedStyle()方法
  419. return getComputedStyle(obj,null)[name]
  420. }else{
  421. //IE8的方式,没有getComputedStyle()方法
  422. return obj.currentStyle[name]
  423. }
  424. }
  425. btncss05.onclick = function(){
  426. var gs = getStyle(p3,"color")
  427. alert("p3color= " + gs )
  428. }
  429. </script>
  430. <pre>
  431. 110. 其他样式相关属性
  432. clientWidth
  433. clientHeight
  434. - 这两个属性可以获取元素的可见宽度和高度
  435. - 这些属性都是不带px的,返回都是一个数字,可以直接进行计算
  436. - 会获取元素宽度和高度,包括内容区和内边距
  437. - 这些属性都是只读的,不能修改
  438. offsetWidth
  439. offsetHeight
  440. - 获取元素的整个的宽度和高度,包括内容区、内边距和边框
  441. offsetParent
  442. - 可以用来获取当前元素的定位父元素
  443. - 会获取到离当前元素最近的开启了定位的祖先元素
  444. 如果所有的祖先元素都没有开启定位,则返回body
  445. offsetLeft
  446. - 当前元素相对于其定位父元素的水平偏移量
  447. offsetTop
  448. - 当前元素相对于其定位父元素的垂直偏移量
  449. scrollWidth
  450. scrollHeight
  451. - 可以获取元素整个滚动区域的宽度和高度
  452. scrollLeft
  453. - 可以获取水平滚动条滚动的距离
  454. scrollTop
  455. - 可以获取垂直滚动条滚动的距离
  456. </pre>
  457. <style type="text/css">
  458. #other05{
  459. width: 200px;
  460. height: 300px;
  461. background-color: #bfa;
  462. overflow: auto;
  463. }
  464. #other06{
  465. width: 400px;
  466. height: 600px;
  467. background-color: yellow;
  468. }
  469. </style>
  470. <div id="other_box" style="position: relative;padding: 50px;border: 1px solid red;">
  471. <p id="other01" style="padding: 10px;border: 5px solid;">clientWidth,clientHeight</p>
  472. <p id="other02" style="padding: 10px;border: 5px solid;">offsetWidth,offsetHeight</p>
  473. <p id="other03">offsetParent</p>
  474. <p id="other04">offsetLeft,offsetTop</p>
  475. <div id="other05">
  476. <div id="other06">scrollWidth,scrollHeight- 可以获取元素整个滚动区域的宽度和高度,scrollLeft- 可以获取水平滚动条滚动的距离scrollTop- 可以获取垂直滚动条滚动的距离</div>
  477. </div>
  478. <button id="other_btn01">client-wh</button>
  479. <button id="other_btn02">offset-wh</button>
  480. <button id="other_btn03">offsetParent</button>
  481. <button id="other_btn04">offset-lt</button>
  482. <button id="other_btn05">scroll</button>
  483. <button id="other_btn06">offsetTop</button>
  484. </div>
  485. <script type="text/javascript">
  486. console.log("--110--");
  487. var other01 = document.getElementById("other01")
  488. var other02 = document.getElementById("other02")
  489. var other03 = document.getElementById("other03")
  490. var other04 = document.getElementById("other04")
  491. var other05 = document.getElementById("other05")
  492. var other06 = document.getElementById("other06")
  493. var other_btn01 = document.getElementById("other_btn01")
  494. var other_btn02 = document.getElementById("other_btn02")
  495. var other_btn03 = document.getElementById("other_btn03")
  496. var other_btn04 = document.getElementById("other_btn04")
  497. var other_btn05 = document.getElementById("other_btn05")
  498. var other_btn06 = document.getElementById("other_btn06")
  499. function myClick(btn,fun){
  500. var btn = document.getElementById(btn)
  501. btn.onclick = fun
  502. }
  503. myClick("other_btn01",function(){
  504. var clientWidth = other01.clientWidth
  505. var clientHeight = other01.clientHeight
  506. alert("clientWidth=" + clientWidth +",clientHeight=" + clientHeight)
  507. })
  508. myClick("other_btn02",function(){
  509. var offsetWidth = other02.offsetWidth
  510. var offsetHeight = other02.offsetHeight
  511. alert("offsetWidth=" + offsetWidth +",offsetHeight=" + offsetHeight)
  512. })
  513. myClick("other_btn03",function(){
  514. var offsetParent = other03.offsetParent
  515. alert( offsetParent.id)
  516. })
  517. myClick("other_btn04",function(){
  518. var offsetLeft = other04.offsetLeft
  519. var offsetTop = other04.offsetTop
  520. alert("offsetLeft=" + offsetLeft +",offsetTop=" + offsetTop)
  521. })
  522. myClick("other_btn05",function(){
  523. var clientWidth = other05.clientWidth
  524. var clientHeight = other05.clientHeight
  525. var scrollWidth = other05.scrollWidth
  526. var scrollHeight = other05.scrollHeight
  527. var scrollLeft = other05.scrollLeft
  528. var scrollTop = other05.scrollTop
  529. alert("clientWidth=" + clientWidth +"\n" +
  530. "scrollLeft=" + scrollLeft +"\n" +
  531. "scrollWidth=" + scrollWidth +"\n" +
  532. "clientHeight=" + clientHeight +"\n" +
  533. "scrollTop=" + scrollTop +"\n" +
  534. "scrollHeight=" + scrollHeight
  535. )
  536. //当满足scrollHeight - scrollTop == clientHeight
  537. //说明垂直滚动条滚动到底了
  538. //当满足scrollWidth - scrollLeft == clientWidth
  539. //说明水平滚动条滚动到底
  540. })
  541. </script>
  542. </body>
  543. </html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值