文档对象模型DOM

文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口。它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式。我们最为关心的是,DOM把网页和脚本以及其他的编程语言联系了起来。DOM属于浏览器,而不是JavaScript语言规范里的规定的核心内容。当网页被加载时,
浏览器会创建页面的文档对象模型(Document Object Model)。
HTML DOM 模型被构造为对象的树。

一、查找元素

1.直接查找

  • document.getElementById 根据ID获取一个标签
  • document.getElementsByName 根据name属性获取标签集合
  • document.getElementsByClassName 根据class属性获取标签集合
  • document.getElementsByTagName 根据标签名获取标签集合

2.间接查找

  • parentNode // 父节点
  • childNodes // 所有子节点
  • firstChild // 第一个子节点
  • lastChild // 最后一个子节点
  • nextSibling // 下一个兄弟节点
  • previousSibling // 上一个兄弟节点

  • parentElement // 父节点标签元素

  • children // 所有子标签

  • firstElementChild // 第一个子标签元素

  • lastElementChild // 最后一个子标签元素

  • nextElementtSibling // 下一个兄弟标签元素

  • previousElementSibling // 上一个兄弟标签元素

节点和标签元素的区别: 节点会把所有元素列出来包括换行符,标签元素只列出标签元素和文本

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <p id="p1">
  9. <span>99999</span>
  10. </p>
  11. <script>
  12. var t = document.getElementById('p1')
  13. var t1 = t.childNodes;
  14. var t2 = t.children;
  15. console.log(t1);
  16. console.log(t2);
  17. </script>
  18. </body>
  19. </html>

效果:

二、操作元素

1.内容

  • innerHTML 设置或获取位于对象起始和结束标签内的 HTML
  • outerHTML 设置或获取对象及其内容的 HTML 形式
  • innerText 设置或获取位于对象起始和结束标签内的文本
  • outerText 设置(包括标签)或获取(不包括标签)对象的文本
  • value 获取input标签的值

innerHTML、outerHTML、innerText、outerText区别:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <title>innerHTML、outerHTML和innerText、outerHTML的区别</title>
  6. <script language="JavaScript" type="text/javascript">
  7.   //.innerHTML
  8.   function innerHTMLDemo()
  9.   {
  10.    test_id1.innerHTML="<i><u>设置或获取位于对象起始和结束标签内的 HTML.</u></i>";
  11.   }
  12.   //.innerText
  13.   function innerTextDemo()
  14.   {
  15.    test_id2.innerText="<i><u>设置或获取位于对象起始和结束标签内的文本.</u></i>";
  16.   }
  17.   //.outerHTML
  18.   function outerHTMLDemo()
  19.   {
  20.    test_id3.outerHTML="<font size=9pt color=red><i><u>设置或获取对象及其内容的 HTML 形式.</u></i></font>";
  21.   }
  22.   //.outerText
  23.   function outerTextDemo()
  24.   {
  25.    test_id4.outerText="<br></br><i><u>设置(包括标签)或获取(不包括标签)对象的文本.</u></i>";
  26.   }
  27.   </script>
  28.   </head>
  29.   <body>
  30.   <ul>
  31.   <li id="test_id1" onclick="innerHTMLDemo()">innerHTML效果.</li>
  32.   <li id="test_id2" onclick="innerTextDemo()">innerText效果.</li>
  33.   <li id="test_id3" onclick="outerHTMLDemo()">outerHTML效果.</li>
  34.   <li id="test_id4" onclick="outerTextDemo()">outerText效果.</li>
  35.   </ul>
  36.   </body>
  37.   </html>

结果:
请复制代码到此,提交查看:
http://www.w3school.com.cn/tiy/t.asp?f=html_basic

不同之处: 
简单的说innerHTML和outerHTML、innerText与outerText的不同之处在于:
  1)、innerHTML与outerHTML在设置对象的内容时包含的HTML会被解析,而innerText与outerText则不会。
  2)、在设置时,innerHTML与innerText仅设置标签内的文本,而outerHTML与outerText设置包括标签在内的文本。
  
  
value实例:
利用value,搜索框默认显示请输入关键字,当鼠标点击进去之后,删除请输入关键字,当鼠标点击其他地方之后,如果搜索框有内容,则显示输入的内容,没有则继续显示请输入关键字

代码:
  

  1. <html lang="en">
  2. <head>
  3. <meta charset="UTF-8">
  4. <title>Title</title>
  5. </head>
  6.  
  7. <body>
  8.  
  9. <input id="i1" type="text" value="请输入关键字" onfocus="Foncs()" onblur="Blur()"/>
  10.  
  11. <script type="text/javascript">
  12. function Foncs() {
  13. var tag = document.getElementById('i1');
  14. if (tag.value == "请输入关键字") {
  15. tag.value = '';
  16. }
  17. }
  18. function Blur() {
  19. var tag = document.getElementById('i1');
  20. var val = tag.value;
  21. if (val.trim().length == 0) {
  22. tag.value = "请输入关键字";
  23. }
  24.  
  25. }
  26.  
  27. </script>
  28.  
  29. </body>
  30. </html>

结果:
请复制代码到此,提交查看:
http://www.w3school.com.cn/tiy/t.asp?f=html_basic  
  
  

2.属性

  • attributes // 获取所有标签属性
  • setAttribute(key,value) // 设置标签属性
  • getAttribute(key) // 获取指定标签属性

    全选、反选、取消示例:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8.  
  9. <input type="button" value="全选" onclick="ChoiceALL()"/>
  10. <input type="button" value="取消" onclick="CancleALL()"/>
  11. <input type="button" value="反选" onclick="ReversALL()"/>
  12. <table border="">
  13. <thead>
  14. <tr>
  15. <td>序号</td>
  16. <td>用户</td>
  17. <td>密码</td>
  18. </tr>
  19. </thead>
  20. <tbody id="tb">
  21. <tr>
  22. <td>
  23. <input type="checkbox" />
  24. </td>
  25. <td>
  26. 张三
  27. </td>
  28. <td>
  29. 123
  30. </td>
  31. </tr>
  32.  
  33. <td>
  34. <input type="checkbox" />
  35. </td>
  36. <td>
  37. 张三
  38. </td>
  39. <td>
  40. 123
  41. </td>
  42. </tr>
  43.  
  44. <td>
  45. <input type="checkbox" />
  46. </td>
  47. <td>
  48. 张三
  49. </td>
  50. <td>
  51. 123
  52. </td>
  53. </tr>
  54. </tbody>
  55.  
  56. </table>
  57. <script type="text/javascript">
  58. function ChoiceALL() {
  59. var tb = document.getElementById('tb');
  60. var trs = tb.children;
  61. for (i=0;i<trs.length;i++) {
  62. var current_tr = trs[i];
  63. var ck = current_tr.firstElementChild.firstElementChild;
  64. // ck.setAttribute('checked','checked');
  65. ck.checked = true;
  66. }
  67.  
  68. }
  69. function CancleALL() {
  70. var tb = document.getElementById('tb');
  71. var trs = tb.children;
  72. for (i=0;i<trs.length;i++) {
  73. var current_tr = trs[i];
  74. var ck = current_tr.firstElementChild.firstElementChild;
  75. // ck.removeAttribute('checked');
  76. ck.checked = false;
  77. }
  78.  
  79. }
  80.  
  81. function ReversALL() {
  82. var tb = document.getElementById('tb');
  83. var trs = tb.children;
  84. for (i=0;i<trs.length;i++) {
  85. var current_tr = trs[i];
  86. var ck = current_tr.firstElementChild.firstElementChild;
  87. if(ck.checked) {
  88. ck.checked = false;
  89. } else {
  90. ck.checked = true;
  91. }
  92.  
  93. }
  94.  
  95. }
  96. </script>
  97. </body>
  98. </html>
  1. 3.class
  • className // 获取所有类名
  • classList.remove(cls) // 删除指定类
  • classList.add(cls) // 添加类

通过对class类的增删,实现对话框

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <style>
  9. .hide{
  10. display: none !important;
  11. }
  12. .shade{
  13. position: fixed;
  14. top:0;
  15. bottom: 0;
  16. left: 0;
  17. right: 0;
  18. /*background-color: black;*/
  19. /*opacity: 0.6;*/
  20. background-color: rgba(0,0,0,.6);
  21. z-index: 1000;
  22. }
  23. .modal{
  24. height: 200px;
  25. width: 400px;
  26. background-color: white;
  27. position: fixed;
  28. top: 50%;
  29. left: 50%;
  30. margin-left: -200px;
  31. margin-top: -100px;
  32. z-index: 1001;
  33. }
  34. </style>
  35.  
  36. <div style="height: 500px ;width: 100%">
  37. <input type="button" value="点我" onclick="showhide()"/>
  38. </div>
  39. <div id="d1" class="shade hide"></div>
  40. <div id="d2" class="modal hide">
  41. <a href="javascript:void(0)" onclick="undisplayhide()">取消</a>
  42. </div>
  43.  
  44. <script type="text/javascript">
  45. function showhide() {
  46. var d1 = document.getElementById('d1');
  47. var d2 = document.getElementById('d2');
  48. d1.classList.remove('hide');
  49. d2.classList.remove('hide');
  50.  
  51. }
  52. function undisplayhide() {
  53. var d1 = document.getElementById('d1');
  54. var d2 = document.getElementById('d2');
  55. d1.classList.add('hide');
  56. d2.classList.add('hide');
  57.  
  58. }
  59. </script>
  60. </body>
  61. </html>
  1. 4.标签

创建标签

  • 方式1:使用对象创建标签,并添加对应的属性
  1. var tag = document.createElement('a') 创建a标签
  2. tag.innerText = "fuzj" 添加a标签中文本内容
  3. tag.className = "c1" a标签应用class c1的样式
  4. tag.href = "http://www.cnblogs.com/pycode" a标签添加href属性
  • 方式2:采用字符串的形式,将标签和属性作为字符串
  1. var tag = "<a class='c1' href='http://www.cnblogs.com/pycode'>fuzj</a>"

操作标签

  • 对象创建方式操作
  1. var d = document.getElementById('d') //获取要插入的标签
  2. d.insertAdjacentElement('beforeEnd',tag)
  • 字符串形势操作
  1. var d = document.getElementById('d'); //获取要插入的标签
  2. d.insertAdjacentHTML('beforeEnd',tag);

插入的位置说明:

  • beforeBegin 在本标签前面添加
  • afterBegin 在本标签的子标签前面添加
  • beforeEnd 在本标签的子标签后面添加
  • afterEnd 在本标签后面添加
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7.  
  8. <body>
  9.  
  10. <div id="d">
  11. <p>p标签1</p>
  12. <p>p标签2</p>
  13. </div>
  14. <script>
  15.  
  16. var tag1 = "<span>beforeEnd</span>";
  17. var tag2 = "<span>afterEnd</span>";
  18. var tag3 = "<span>beforeBegin</span>";
  19. var tag4 = "<span>afterBegin</span>";
  20. var d = document.getElementById('d'); //获取要插入的标签
  21. d.insertAdjacentHTML('beforeEnd',tag1);
  22. d.insertAdjacentHTML('afterEnd',tag2);
  23. d.insertAdjacentHTML('beforeBegin',tag3);
  24. d.insertAdjacentHTML('afterBegin',tag4);
  25.  
  26. </script>
  27.  
  28. </body>
  29. </html>

补充:
还有一种方式 添加标签

  • appendChild 添加到指定子节点
  • insertBefore 在现有的子节点前插入一个新的子节点
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7.  
  8. <body>
  9.  
  10. <div id="d">
  11. <p>p标签1</p>
  12. <p>p标签2</p>
  13. </div>
  14. <script>
  15.  
  16. var tag1 = document.createElement('span');
  17. var tag2 = document.createElement('span');
  18. tag1.innerText = 'appendChild';
  19. tag2.innerText = 'insertBefore';
  20. var d = document.getElementById('d'); //获取要插入的标签
  21.  
  22. d.appendChild(tag1);
  23. d.insertBefore(tag2,d.childNodes[0]); //d.choildNodes获取d的所有子节点
  24.  
  25. </script>
  26.  
  27. </body>
  28. </html>
  1. 5.样式操作

dom对样式操作直接在节点对象后面加.style.对应的样式,注意,类似font-size 变为fontSize,没有了-

  1. var obj = document.getElementById('i1')
  2. obj.style.fontSize = "32px";
  3. obj.style.backgroundColor = "red";

点赞案例:通过循环动态修改样式,实现点赞+1的效果

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <style>
  7. .iterm {
  8. padding: 50px;
  9. position: relative;
  10. }
  11. </style>
  12. </head>
  13. <body>
  14.  
  15. <div>
  16. <div class="iterm">
  17. <a onclick="zan(this)">赞1</a>
  18. </div>
  19. <div class="iterm">
  20. <a onclick="zan(this)">赞2</a>
  21. </div>
  22. <div class="iterm">
  23. <a onclick="zan(this)">赞3</a>
  24. </div>
  25. <div class="iterm">
  26. <a onclick="zan(this)">赞4</a>
  27. </div>
  28. </div>
  29.  
  30. <script type="text/javascript">
  31. function zan(ths) {
  32. var top = 50;
  33. var left = 70;
  34. var op = 1;
  35. var fontSize = 18;
  36.  
  37. var tag = document.createElement('span')
  38. tag.innerText = "+1";
  39. tag.style.position = 'absolute';
  40. tag.style.top = top + "px";
  41. tag.style.left = left + "px";
  42. tag.style.opacity = op;
  43. tag.style.fontSize = fontSize + "px";
  44. ths.parentElement.appendChild(tag);
  45. var interval = setInterval(function() {
  46. top -= 10;
  47. left +=10;
  48. op -= 0.2;
  49. fontSize +=5;
  50.  
  51. tag.style.top = top + "px";
  52. tag.style.left = left + "px";
  53. tag.style.opacity = op;
  54. tag.style.fontSize = fontSize + "px";
  55.  
  56. if (op <= 0.2) {
  57. clearInterval(interval);
  58. ths.parentElement.removeChild(tag);
  59. }
  60. },50)
  61.  
  62. }
  63. </script>
  64. </body>
  65. </html>

效果可复制代码至http://www.w3school.com.cn/tiy/t.asp?f=html_basic,进行查看

6.位置操作

  • clientHeight和clientWidth用于描述元素内尺寸,是指 元素内容+内边距 大小,不包括边框(IE下实际包括)、外边距、滚动条部分
  • offsetHeight和offsetWidth用于描述元素外尺寸,是指 元素内容+内边距+边框,不包括外边距和滚动条部分
  • clientTop和clientLeft返回内边距的边缘和边框的外边缘之间的水平和垂直距离,也就是左,上边框宽度
  • offsetTop和offsetLeft表示该元素的左上角(边框外边缘)与已定位的父容器(offsetParent对象)左上角的距离
  • offsetParent对象是指元素最近的定位(relative,absolute)祖先元素,递归上溯,如果没有祖先元素是定位的话,会返回nul
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <div id="divParent" style="padding: 8px; background-color: #aaa; position: relative;">
  9. <div id="divDisplay" style="background-color: #0f0; margin: 30px; padding: 10px;height: 200px; width: 200px; border: solid 3px #f00;">
  10. </div>
  11. </div>
  12. <script type="text/javascript">
  13. var div = document.getElementById('divDisplay');
  14. var clientHeight = div.clientHeight;
  15. var clientWidth = div.clientWidth;
  16. div.innerHTML += 'clientHeight: ' + clientHeight + '<br/>';
  17. div.innerHTML += 'clientWidth: ' + clientWidth + '<br/>';
  18. var clientLeft = div.clientLeft;
  19. var clientTop = div.clientTop;
  20. div.innerHTML += 'clientLeft: ' + clientLeft + '<br/>';
  21. div.innerHTML += 'clientTop: ' + clientTop + '<br/>';
  22. var offsetHeight = div.offsetHeight;
  23. var offsetWidth = div.offsetWidth;
  24. div.innerHTML += 'offsetHeight: ' + offsetHeight + '<br/>';
  25. div.innerHTML += 'offsetWidth: ' + offsetWidth + '<br/>';
  26. var offsetLeft = div.offsetLeft;
  27. var offsetTop = div.offsetTop;
  28. div.innerHTML += 'offsetLeft: ' + offsetLeft + '<br/>';
  29. div.innerHTML += 'offsetTop: ' + offsetTop + '<br/>';
  30. var offsetParent = div.offsetParent;
  31. div.innerHTML += 'offsetParent: ' + offsetParent.id + '<br/>';
  32. </script>
  33. </body>
  34. </html>

效果可复制代码至http://www.w3school.com.cn/tiy/t.asp?f=html_basic,进行查看

其他:

  1. clientHeight -> 可见区域:height + padding
  2. clientTop -> border高度
  3. offsetHeight -> 可见区域:height + padding + border
  4. offsetTop -> 上级定位标签的高度
  5. scrollHeight -> 全文高:height + padding
  6. scrollTop -> 滚动高度
  7. 特别的:
  8. document.documentElement代指文档根节点

示例:实现随着滚动条滚动,定位菜单:

  1. <!DOCTYPE html>
  2. <html>
  3. <head lang="en">
  4. <meta charset="UTF-8">
  5. <title></title>
  6. </head>
  7. <style>
  8.  
  9. body{
  10. margin: 0px;
  11. }
  12. img {
  13. border: 0;
  14. }
  15. ul{
  16. padding: 0;
  17. margin: 0;
  18. list-style: none;
  19. }
  20. h1{
  21. padding: 0;
  22. margin: 0;
  23. }
  24. .clearfix:after {
  25. content: ".";
  26. display: block;
  27. height: 0;
  28. clear: both;
  29. visibility: hidden;
  30. }
  31.  
  32. .wrap{
  33. width: 980px;
  34. margin: 0 auto;
  35. }
  36.  
  37. .pg-header{
  38. background-color: #303a40;
  39. -webkit-box-shadow: 0 2px 5px rgba(0,0,0,.2);
  40. -moz-box-shadow: 0 2px 5px rgba(0,0,0,.2);
  41. box-shadow: 0 2px 5px rgba(0,0,0,.2);
  42. }
  43. .pg-header .logo{
  44. float: left;
  45. padding:5px 10px 5px 0px;
  46. }
  47. .pg-header .logo img{
  48. vertical-align: middle;
  49. width: 110px;
  50. height: 40px;
  51.  
  52. }
  53. .pg-header .nav{
  54. line-height: 50px;
  55. }
  56. .pg-header .nav ul li{
  57. float: left;
  58. }
  59. .pg-header .nav ul li a{
  60. display: block;
  61. color: #ccc;
  62. padding: 0 20px;
  63. text-decoration: none;
  64. font-size: 14px;
  65. }
  66. .pg-header .nav ul li a:hover{
  67. color: #fff;
  68. background-color: #425a66;
  69. }
  70. .pg-body{
  71.  
  72. }
  73. .pg-body .catalog{
  74. position: absolute;
  75. top:60px;
  76. width: 200px;
  77. background-color: #fafafa;
  78. bottom: 0px;
  79. }
  80. .pg-body .catalog.fixed{
  81. position: fixed;
  82. top:10px;
  83. }
  84.  
  85. .pg-body .catalog .catalog-item.active{
  86. color: #fff;
  87. background-color: #425a66;
  88. }
  89.  
  90. .pg-body .content{
  91. position: absolute;
  92. top:60px;
  93. width: 700px;
  94. margin-left: 210px;
  95. background-color: #fafafa;
  96. overflow: auto;
  97. }
  98. .pg-body .content .section{
  99. height: 500px;
  100. border: 1px solid red;
  101. }
  102. </style>
  103. <body onscroll="ScrollEvent();">
  104. <div class="pg-header">
  105. <div class="wrap clearfix">
  106. <div class="logo">
  107. <a href="#">
  108. <img src="http://core.pc.lietou-static.com/revs/images/common/logo_7012c4a4.pn">
  109. </a>
  110. </div>
  111. <div class="nav">
  112. <ul>
  113. <li>
  114. <a href="#">首页</a>
  115. </li>
  116. <li>
  117. <a href="#">功能一</a>
  118. </li>
  119. <li>
  120. <a href="#">功能二</a>
  121. </li>
  122. </ul>
  123. </div>
  124.  
  125. </div>
  126. </div>
  127. <div class="pg-body">
  128. <div class="wrap">
  129. <div class="catalog" id="catalog">
  130. <div class="catalog-item" auto-to="function1"><a>第1张</a></div>
  131. <div class="catalog-item" auto-to="function2"><a>第2张</a></div>
  132. <div class="catalog-item" auto-to="function3"><a>第3张</a></div>
  133. </div>
  134. <div class="content" id="content">
  135. <div menu="function1" class="section">
  136. <h1>第一章</h1>
  137. </div>
  138. <div menu="function2" class="section">
  139. <h1>第二章</h1>
  140. </div>
  141. <div menu="function3" class="section" style="height: 200px;">
  142. <h1>第三章</h1>
  143. </div>
  144. </div>
  145. </div>
  146.  
  147. </div>
  148. <script>
  149. function ScrollEvent(){
  150. var bodyScrollTop = document.body.scrollTop;
  151. if(bodyScrollTop>50){
  152. document.getElementsByClassName('catalog')[0].classList.add('fixed');
  153. }else{
  154. document.getElementsByClassName('catalog')[0].classList.remove('fixed');
  155. }
  156.  
  157. var content = document.getElementById('content');
  158. var sections = content.children;
  159. for(var i=0;i<sections.length;i++){
  160. var current_section = sections[i];
  161.  
  162. // 当前标签距离顶部绝对高度
  163. var scOffTop = current_section.offsetTop + 60;
  164.  
  165. // 当前标签距离顶部,相对高度
  166. var offTop = scOffTop - bodyScrollTop;
  167.  
  168. // 当前标签高度
  169. var height = current_section.scrollHeight;
  170.  
  171. if(offTop<0 && -offTop < height){
  172. // 当前标签添加active
  173. // 其他移除 active
  174.  
  175. // 如果已经到底部,现实第三个菜单
  176. // 文档高度 = 滚动高度 + 视口高度
  177.  
  178. var a = document.getElementsByClassName('content')[0].offsetHeight + 60;
  179. var b = bodyScrollTop + document.documentElement.clientHeight;
  180. console.log(a+60,b);
  181. if(a == b){
  182. var menus = document.getElementById('catalog').children;
  183. var current_menu = document.getElementById('catalog').lastElementChild;
  184. current_menu.classList.add('active');
  185. for(var j=0;j<menus.length;j++){
  186. if(menus[j] == current_menu){
  187.  
  188. }else{
  189. menus[j].classList.remove('active');
  190. }
  191. }
  192. }else{
  193. var menus = document.getElementById('catalog').children;
  194. var current_menu = menus[i];
  195. current_menu.classList.add('active');
  196. for(var j=0;j<menus.length;j++){
  197. if(menus[j] == current_menu){
  198.  
  199. }else{
  200. menus[j].classList.remove('active');
  201. }
  202. }
  203. }
  204.  
  205. break;
  206. }
  207.  
  208. }
  209.  
  210. }
  211. </script>
  212. </body>
  213. </html>

7.js提交表单

表单form 提交的时候需要使用typ=submit的元素,我们还可以使用js,实现提交表单
document.geElementById('form').submit()

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8.  
  9. <form id="f1">
  10. <input id="inp" type="text">
  11. <input type="submit" value="提交">
  12. <a onclick="dianji()">提交</a>
  13. </form>
  14.  
  15. <script>
  16. function dianji() {
  17. var fm = document.getElementById('f1');
  18. var inp = document.getElementById('inp');
  19. if (inp.value.length > 0) {
  20. fm.submit();
  21. } else {
  22. alert('不能为空')
  23. }
  24.  
  25. }
  26. </script>
  27. </body>
  28. </html>

8.其他操作

console.log 输出框,在chrome开发视图的console下输出
alert 弹出框。
confirm 确认框 弹出是否确认,

// URL和刷新
location.href 获取URL
location.href = "url" 重定向
location.reload() 重新加载

// 定时器
setInterval 多次定时器
clearInterval 清除多次定时器
setTimeout 单次定时器
clearTimeout 清除单次定时器

三.事件

属性 当以下情况发生时,出现此事件
onabort 图像加载被中断
onblur 元素失去焦点
onchange 用户改变域的内容
onclick 鼠标点击某个对象
ondblclick 鼠标双击某个对象
onerror 当加载文档或图像时发生某个错误
onfocus 元素获得焦点
onkeydown 某个键盘的键被按下
onkeypress 某个键盘的键被按下或按住
onkeyup 某个键盘的键被松开
onload 某个页面或图像被完成加载
onmousedown 某个鼠标按键被按下
onmousemove 鼠标被移动
onmouseout 鼠标从某元素移开
onmouseover 鼠标被移到某元素之上
onmouseup 某个鼠标按键被松开
onreset 重置按钮被点击
onresize 窗口或框架被调整尺寸
onselect 文本被选定
onsubmit 提交按钮被点击
onunload 用户退出页面

对于事件需要注意的要点:

  • this
  • event
  • 事件链以及跳出
    this标签当前正在操作的标签,event封装了当前事件的内容

JavaScript进阶之DOM的更多相关文章

  1. JavaScript进阶内容——DOM详解

    JavaScript进阶内容--DOM详解 当我们已经熟练掌握JavaScript的语法之后,我们就该进入更深层次的学习了 首先我们思考一下:JavaScript是用来做什么的? JavaScript ...

  2. 二、JavaScript语言--JS基础--JavaScript进阶篇--DOM对象 控制HTML元素

    1.认识DOM 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属性和文本的树结构(节点树). 先来看看下面 ...

  3. javascript进阶——分离式DOM脚本编程

    编写分离式(unobstrusive)代码意味着对HTML内容的完全分离:数据来自服务器端,javascript代码用来动态化和交互.这种分离的好处是在不同浏览器之间使用是可以完全降级或升级运行,对于 ...

  4. Javascript进阶篇——(DOM—节点---获取浏览器窗口可视区域大小+获取网页尺寸)—笔记整理

    浏览器窗口可视区域大小获得浏览器窗口的尺寸(浏览器的视口,不包括工具栏和滚动条)的方法:一.对于IE9+.Chrome.Firefox.Opera 以及 Safari: • window.innerH ...

  5. Javascript进阶篇——(DOM—节点---插入、删除和替换元素、创建元素、创建文本节点)—笔记整理

    插入节点appendChild()在指定节点的最后一个子节点列表之后添加一个新的子节点.语法: appendChild(newnode) //参数: //newnode:指定追加的节点. 为ul添加一 ...

  6. Javascript进阶篇——(DOM—节点---属性、访问节点)—笔记整理

    节点属性在文档对象模型 (DOM) 中,每个节点都是一个对象.DOM 节点有三个重要的属性 : 1. nodeName : 节点的名称 2. nodeValue :节点的值 3. nodeType : ...

  7. Javascript进阶篇——(DOM—认识DOM、ByName、ByTagName)—笔记整理

    认识DOM文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属性和文本的树结构(节点树). 将HTML代码分解 ...

  8. Javascript进阶篇——(DOM—getAttribute()、setAttribute()方法)—笔记整理

    getAttribute()方法通过元素节点的属性名称获取属性的值.语法: elementNode.getAttribute(name) 1. elementNode:使用getElementById ...

  9. #笔记#JavaScript进阶篇一

    #JavaScript进阶篇 http://www.imooc.com/learn/10 #认识DOM #window对象 浏览器窗口可视区域监测—— 在不同浏览器(PC)都实用的 JavaScrip ...

随机推荐

  1. delphi连接sql存储过程

    针对返回结果为参数的 一. 先建立自己的存储过程 ALTER PROCEDURE [dbo].[REName] ) AS BEGIN select ROW_NUMBER() over(order by ...

  2. 【转】推荐10款最热门jQuery UI框架

    推荐10款最热门jQuery UI框架 原创 在进行Web开发时,并非所有的库都适合你的项目,但你仍需要收藏一些Web UI设计相关的库或框架,以在你需要的时候,加快你的开发效率.本文为你推荐10款非 ...

  3. iOS基本数据库存储方式 - CoreData

    CoreData 创建模型文件的过程 1.选择模板 2.添加实体 3.添加实体的属性[注意]属性的首字母必须小写 一.CoreData管理类(必备以下三个类对象) 1.CoreData数据操作的上下文 ...

  4. Android 手机卫士--参照文档编写选择器

    本文来实现<Android 手机卫士--导航界面1的布局编写>中的图片选择器部分的代码. 本文地址:http://www.cnblogs.com/wuyudong/p/5944356.ht ...

  5. iOS 性能调试

    性能调优的方式: 1.通过专门的性能调优工具 2.通过代码优化 1. 性能调优工具: 下面针对iOS的性能调优工具进行一个介绍: 1.1 静态分析工具–Analyze 相信iOS开发者在App进行Bu ...

  6. iOS网络1——NSURLConnection使用详解

    原文在此 一.整体介绍 NSURLConnection是苹果提供的原生网络访问类,但是苹果很快会将其废弃,且由NSURLSession(iOS7以后)来替代.目前使用最广泛的第三方网络框架AFNetw ...

  7. java 堆栈 理解

    Java 中的堆和栈 堆和栈:分为数据结构的堆和栈以及内存中的堆和栈,两种理解应区分开. 数据结构中的堆: 堆实际上指的就是(满足堆性质的)优先队列的一种数据结构,第1个元素有最高的优先权. 堆性质: ...

  8. j2ee项目服务器怎样部署?

    1.右击项目  >>  点击如图1中❶  >>  Project(选择项目)  >>  Add  如图1: 图1 2.点击Add  >>  Server ...

  9. AD域撤销域用户管理员权限方案

    一.简介 公司大部分主机加入域已有一段时间了,由于某软件没管理员权限不能执行,所以管理员权限一直没撤销,不能完全实现域的管理效果.但起码实现了域用户脱离不了域的控制:http://www.cnblog ...

  10. Windows 10 虚拟桌面切换

    从Windows 10开始,终于有了和Mac一样的虚拟桌面了.但总感觉用着非常的别扭.在Mac中,切换虚拟桌面的操作可谓方便至极:除了触控板和Magic Mouse原生的支持外,通过罗技M557/55 ...