DOM是Javascript操作网页的接口,全称叫文档对象模型(Document Object Model)。它的作用是将网页转化为一个Javascript对象,从而用Javascript脚本进行各种操作(比如增删元素等)。
    image.png
    image.png
    ①验证用户名是否达到要求—getElementById

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Title</title>
    6. <script type="text/javascript" >
    7. /*
    8. * 需求:当用户点击了较验按钮,要获取输出框中的内容。然后验证其是否合法。<br/>
    9. * 验证的规则是:必须由字母,数字。下划线组成。并且长度是5到12位。
    10. * */
    11. function onclickFun() {
    12. // 1 当我们要操作一个标签的时候,一定要先获取这个标签对象。
    13. var usernameObj = document.getElementById("username");
    14. // [object HTMLInputElement] 它就是dom对象
    15. var usernameText = usernameObj.value;
    16. // 如何 验证 字符串,符合某个规则 ,需要使用正则表达式技术
    17. var patt = /^\w{5,12}$/;
    18. /*
    19. * test()方法用于测试某个字符串,是不是匹配我的规则 ,
    20. * 匹配就返回true。不匹配就返回false.
    21. * */
    22. var usernameSpanObj = document.getElementById("usernameSpan");
    23. // innerHTML 表示起始标签和结束标签中的内容
    24. // innerHTML 这个属性可读,可写
    25. usernameSpanObj.innerHTML = "国哥真可爱!";
    26. if (patt.test(usernameText)) {
    27. // alert("用户名合法!");
    28. // usernameSpanObj.innerHTML = "用户名合法!";
    29. usernameSpanObj.innerHTML = "<img src=\"right.png\" width=\"18\" height=\"18\">";
    30. } else {
    31. // alert("用户名不合法!");
    32. // usernameSpanObj.innerHTML = "用户名不合法!";
    33. usernameSpanObj.innerHTML = "<img src=\"wrong.png\" width=\"18\" height=\"18\">";
    34. }
    35. }
    36. </script>
    37. </head>
    38. <body>
    39. 用户名:<input type="text" id="username" value="wzg"/>
    40. <span id="usernameSpan" style="color:red;">
    41. </span>
    42. <button onclick="onclickFun()">较验</button>
    43. </body>
    44. </html>

    ②正则表达式

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Title</title>
    6. <script type="text/javascript">
    7. // 表示要求字符串中,是否包含字母e
    8. // var patt = new RegExp("e");
    9. // var patt = /e/; // 也是正则表达式对象
    10. // 表示要求字符串中,是否包含字母a或b或c
    11. // var patt = /[abc]/;
    12. // 表示要求字符串,是否包含小写字母
    13. // var patt = /[a-z]/;
    14. // 表示要求字符串,是否包含任意大写字母
    15. // var patt = /[A-Z]/;
    16. // 表示要求字符串,是否包含任意数字
    17. // var patt = /[0-9]/;
    18. // 表示要求字符串,是否包含字母,数字,下划线
    19. // var patt = /\w/;
    20. // 表示要求 字符串中是否包含至少一个a
    21. // var patt = /a+/;
    22. // 表示要求 字符串中是否 *包含* 零个 或 多个a
    23. // var patt = /a*/;
    24. // 表示要求 字符串是否包含一个或零个a
    25. // var patt = /a?/;
    26. // 表示要求 字符串是否包含连续三个a
    27. // var patt = /a{3}/;
    28. // 表示要求 字符串是否包 至少3个连续的a,最多5个连续的a
    29. // var patt = /a{3,5}/;
    30. // 表示要求 字符串是否包 至少3个连续的a,
    31. // var patt = /a{3,}/;
    32. // 表示要求 字符串必须以a结尾
    33. // var patt = /a$/;
    34. // 表示要求 字符串必须以a打头
    35. // var patt = /^a/;
    36. // 要求字符串中是否*包含* 至少3个连续的a
    37. // var patt = /a{3,5}/;
    38. // 要求字符串,从头到尾都必须完全匹配
    39. // var patt = /^a{3,5}$/;
    40. var patt = /^\w{5,12}$/;
    41. var str = "wzg168[[[";
    42. alert( patt.test(str) );
    43. </script>
    44. </head>
    45. <body>
    46. </body>
    47. </html>

    运行结果:
    image.png
    image.png
    ③复选框全选—getElementByName

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Title</title>
    6. <script type="text/javascript">
    7. // 全选
    8. function checkAll() {
    9. // 让所有复选框都选中
    10. // document.getElementsByName();是根据 指定的name属性查询返回多个标签对象集合
    11. // 这个集合的操作跟数组 一样
    12. // 集合中每个元素都是dom对象
    13. // 这个集合中的元素顺序是他们在html页面中从上到下的顺序
    14. var hobbies = document.getElementsByName("hobby");
    15. // checked表示复选框的选中状态。如果选中是true,不选中是false
    16. // checked 这个属性可读,可写
    17. for (var i = 0; i < hobbies.length; i++){
    18. hobbies[i].checked = true;
    19. }
    20. }
    21. //全不选
    22. function checkNo() {
    23. var hobbies = document.getElementsByName("hobby");
    24. // checked表示复选框的选中状态。如果选中是true,不选中是false
    25. // checked 这个属性可读,可写
    26. for (var i = 0; i < hobbies.length; i++){
    27. hobbies[i].checked = false;
    28. }
    29. }
    30. // 反选
    31. function checkReverse() {
    32. var hobbies = document.getElementsByName("hobby");
    33. for (var i = 0; i < hobbies.length; i++) {
    34. hobbies[i].checked = !hobbies[i].checked;
    35. // if (hobbies[i].checked) {
    36. // hobbies[i].checked = false;
    37. // }else {
    38. // hobbies[i].checked = true;
    39. // }
    40. }
    41. }
    42. </script>
    43. </head>
    44. <body>
    45. 兴趣爱好:
    46. <input type="checkbox" name="hobby" value="cpp" checked="checked">C++
    47. <input type="checkbox" name="hobby" value="java">Java
    48. <input type="checkbox" name="hobby" value="js">JavaScript
    49. <br/>
    50. <button onclick="checkAll()">全选</button>
    51. <button onclick="checkNo()">全不选</button>
    52. <button onclick="checkReverse()">反选</button>
    53. </body>
    54. </html>

    运行结果:
    image.png
    ④getElementByTagName实现复选框全选

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Title</title>
    6. <script type="text/javascript">
    7. window.onload = function(){
    8. // alert( document.getElementById("btn01") );
    9. }
    10. // 全选
    11. function checkAll() {
    12. alert( document.getElementById("btn01") );
    13. // document.getElementsByTagName("input");
    14. // 是按照指定标签名来进行查询并返回集合
    15. // 这个集合的操作跟数组 一样
    16. // 集合中都是dom对象
    17. // 集合中元素顺序 是他们在html页面中从上到下的顺序。
    18. var inputs = document.getElementsByTagName("input");
    19. for (var i = 0; i < inputs.length; i++){
    20. inputs[i].checked = true;
    21. }
    22. }
    23. </script>
    24. </head>
    25. <body>
    26. <!--as -->
    27. 兴趣爱好:
    28. <input type="checkbox" value="cpp" checked="checked">C++
    29. <input type="checkbox" value="java">Java
    30. <input type="checkbox" value="js">JavaScript
    31. <br/>
    32. <button id="btn01" onclick="checkAll()">全选</button>
    33. </body>
    34. </html>

    image.png
    ⑤DOM查询练习:

    1. @CHARSET "UTF-8";
    2. body {
    3. width: 800px;
    4. margin-left: auto;
    5. margin-right: auto;
    6. }
    7. button {
    8. width: 300px;
    9. margin-bottom: 10px;
    10. }
    11. #btnList {
    12. float:left;
    13. }
    14. #total{
    15. width: 450px;
    16. float:left;
    17. }
    18. ul{
    19. list-style-type: none;
    20. margin: 0px;
    21. padding: 0px;
    22. }
    23. .inner li{
    24. border-style: solid;
    25. border-width: 1px;
    26. padding: 5px;
    27. margin: 5px;
    28. background-color: #99ff99;
    29. float:left;
    30. }
    31. .inner{
    32. width:400px;
    33. border-style: solid;
    34. border-width: 1px;
    35. margin-bottom: 10px;
    36. padding: 10px;
    37. float: left;
    38. }
    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>dom查询</title>
    6. <link rel="stylesheet" type="text/css" href="style/css.css" />
    7. <script type="text/javascript">
    8. window.onload = function(){
    9. //1.查找#bj节点
    10. document.getElementById("btn01").onclick = function () {
    11. var bjObj = document.getElementById("bj");
    12. alert(bjObj.innerHTML);
    13. }
    14. //2.查找所有li节点
    15. var btn02Ele = document.getElementById("btn02");
    16. btn02Ele.onclick = function(){
    17. var lis = document.getElementsByTagName("li");
    18. alert(lis.length)
    19. };
    20. //3.查找name=gender的所有节点
    21. var btn03Ele = document.getElementById("btn03");
    22. btn03Ele.onclick = function(){
    23. var genders = document.getElementsByName("gender");
    24. alert(genders.length)
    25. };
    26. //4.查找#city下所有li节点
    27. var btn04Ele = document.getElementById("btn04");
    28. btn04Ele.onclick = function(){
    29. //1 获取id为city的节点
    30. //2 通过city节点.getElementsByTagName按标签名查子节点
    31. var lis = document.getElementById("city").getElementsByTagName("li");
    32. alert(lis.length)
    33. };
    34. //5.返回#city的所有子节点
    35. var btn05Ele = document.getElementById("btn05");
    36. btn05Ele.onclick = function(){
    37. //1 获取id为city的节点
    38. //2 通过city获取所有子节点
    39. alert(document.getElementById("city").childNodes.length);
    40. };
    41. //6.返回#phone的第一个子节点
    42. var btn06Ele = document.getElementById("btn06");
    43. btn06Ele.onclick = function(){
    44. // 查询id为phone的节点
    45. alert( document.getElementById("phone").firstChild.innerHTML );
    46. };
    47. //7.返回#bj的父节点
    48. var btn07Ele = document.getElementById("btn07");
    49. btn07Ele.onclick = function(){
    50. //1 查询id为bj的节点
    51. var bjObj = document.getElementById("bj");
    52. //2 bj节点获取父节点
    53. alert( bjObj.parentNode.innerHTML );
    54. };
    55. //8.返回#android的前一个兄弟节点
    56. var btn08Ele = document.getElementById("btn08");
    57. btn08Ele.onclick = function(){
    58. // 获取id为android的节点
    59. // 通过android节点获取前面兄弟节点
    60. alert( document.getElementById("android").previousSibling.innerHTML );
    61. };
    62. //9.读取#username的value属性值
    63. var btn09Ele = document.getElementById("btn09");
    64. btn09Ele.onclick = function(){
    65. alert(document.getElementById("username").value);
    66. };
    67. //10.设置#username的value属性值
    68. var btn10Ele = document.getElementById("btn10");
    69. btn10Ele.onclick = function(){
    70. document.getElementById("username").value = "国哥你真牛逼";
    71. };
    72. //11.返回#bj的文本值
    73. var btn11Ele = document.getElementById("btn11");
    74. btn11Ele.onclick = function(){
    75. alert(document.getElementById("city").innerHTML);
    76. // alert(document.getElementById("city").innerText);
    77. };
    78. };
    79. </script>
    80. </head>
    81. <body>
    82. <div id="total">
    83. <div class="inner">
    84. <p>
    85. 你喜欢哪个城市?
    86. </p>
    87. <ul id="city">
    88. <li id="bj">北京</li>
    89. <li>上海</li>
    90. <li>东京</li>
    91. <li>首尔</li>
    92. </ul>
    93. <br>
    94. <br>
    95. <p>
    96. 你喜欢哪款单机游戏?
    97. </p>
    98. <ul id="game">
    99. <li id="rl">红警</li>
    100. <li>实况</li>
    101. <li>极品飞车</li>
    102. <li>魔兽</li>
    103. </ul>
    104. <br />
    105. <br />
    106. <p>
    107. 你手机的操作系统是?
    108. </p>
    109. <ul id="phone"><li>IOS</li><li id="android">Android</li><li>Windows Phone</li></ul>
    110. </div>
    111. <div class="inner">
    112. gender:
    113. <input type="radio" name="gender" value="male"/>
    114. Male
    115. <input type="radio" name="gender" value="female"/>
    116. Female
    117. <br>
    118. <br>
    119. name:
    120. <input type="text" name="name" id="username" value="abcde"/>
    121. </div>
    122. </div>
    123. <div id="btnList">
    124. <div><button id="btn01">查找#bj节点</button></div>
    125. <div><button id="btn02">查找所有li节点</button></div>
    126. <div><button id="btn03">查找name=gender的所有节点</button></div>
    127. <div><button id="btn04">查找#city下所有li节点</button></div>
    128. <div><button id="btn05">返回#city的所有子节点</button></div>
    129. <div><button id="btn06">返回#phone的第一个子节点</button></div>
    130. <div><button id="btn07">返回#bj的父节点</button></div>
    131. <div><button id="btn08">返回#android的前一个兄弟节点</button></div>
    132. <div><button id="btn09">返回#username的value属性值</button></div>
    133. <div><button id="btn10">设置#username的value属性值</button></div>
    134. <div><button id="btn11">返回#bj的文本值</button></div>
    135. </div>
    136. </body>
    137. </html>

    运行结果:
    image.png