1.dom元素对象

html中每个标签都可以看做一个元素对象
可以通过document对象获取 如何通过document对象获取document.getElementById(“id属性值”);
返回对拥有指定 id 的第一个对象的引用。
document.getElementsByClassName(“class属性值”);
返回文档中所有指定类名的元素数组
document.getElementsByName(“name属性值”);
返回带有指定名称的对象数组。
document.getElementsByTagName(“标签名”)
返回带有指定标签名的对象数组。 常用属性

  • className 设置/获取class属性
  • innerText 设置/获取标签内部文本,如果文本包含html标签,不会被解析
  • innerHTML 设置/获取标签内部html,如果文本包含html标签,会被解析
  • parentNode 获取当前标签父标签
  • style 设置或返回元素的样式属性(元素对象.style.css属性 = 值) 常用方法
  • removeAttribute(“属性名”); 删除该属性
  • getElementsByTagName(“标签名”); 根据标签名获取该元素内的元素对象
  • getElementsByClassName(“class属性名”); 根据class属性值获取该元素内的元素对象
  • remove(); 删除该元素对象
  • setAttribute(“属性名”,”值”); 设置该元素对象的该属性值

    1.1霓虹灯案例

    所用的属性和方法
  • className 设置/获取class属性
  • removeAttribute(“属性名”); 删除该属性

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title></title>
    6. <style type="text/css">
    7. .pc {
    8. color: blue;
    9. }
    10. </style>
    11. </head>
    12. <body>
    13. <h3>登高</h3>
    14. <p>风急天高猿啸哀,</p>
    15. <p>渚清沙白鸟飞回。</p>
    16. <p>无边落木萧萧下,</p>
    17. <p>不尽长江滚滚来。</p>
    18. <button type="button" onclick="changeColor();">修改标题颜色</button>
    19. </body>
    20. <!--
    21. 元素对象:
    22. 属性
    23. className 设置或获取class属性
    24. 方法
    25. removeAttribute("属性名")
    26. -->
    27. <script type="text/javascript">
    28. function changeColor() {
    29. /*
    30. length
    31. 可以通过下标获取
    32. */
    33. var ps = document.getElementsByTagName("p");
    34. var index = 0;
    35. setInterval(function(){
    36. //每次都先把所有样式删除
    37. for(var i=0; i<ps.length; i++) {
    38. ps[i].removeAttribute("class");
    39. }
    40. //为指定标签添加样式
    41. ps[index++%4].className = "pc";
    42. },500);
    43. }
    44. </script>
    45. </html>

    1.2跑马灯案例

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title></title>
    6. <style type="text/css">
    7. div {
    8. width: 100px;
    9. height: 100px;
    10. border: 1px solid #0000FF;
    11. margin: 10px;
    12. float: left;
    13. }
    14. .pc {
    15. background-color: #FF0000;
    16. }
    17. </style>
    18. </head>
    19. <body>
    20. <div></div>
    21. <div></div>
    22. <div></div>
    23. <div></div>
    24. <button type="button" onclick="changeColor();">修改标题颜色</button>
    25. </body>
    26. <script type="text/javascript">
    27. function changeColor() {
    28. /*
    29. length
    30. 可以通过下标获取
    31. */
    32. var divs = document.getElementsByTagName("div");
    33. var index = 0;
    34. setInterval(function(){
    35. //每次都先把所有样式删除
    36. for(var i=0; i<divs.length; i++) {
    37. divs[i].removeAttribute("class");
    38. }
    39. //为指定标签添加样式
    40. divs[index++%4].className = "pc";
    41. },500);
    42. }
    43. </script>
    44. </html>

    1.3计算总金额案例

    所用到的属性和方法

  • innerText
  • getElementsByTagName(“标签名”) ```html <!DOCTYPE html>

    1. <meta charset="utf-8">
    2. <title></title>

    1. <table border="1px" >
    2. <tr>
    3. <td>商品名称</td>
    4. <td>价格</td>
    5. <td>数量</td>
    6. <td>金额</td>
    7. </tr>
    8. <tr>
    9. <td>iphone14</td>
    10. <td>8000</td>
    11. <td>2</td>
    12. <td>16000</td>
    13. </tr>
    14. <tr>
    15. <td>特斯拉Model4</td>
    16. <td>300000</td>
    17. <td>3</td>
    18. <td>900000</td>
    19. </tr>
    20. <tr>
    21. <td>外星人</td>
    22. <td>20000</td>
    23. <td>3</td>
    24. <td>60000</td>
    25. </tr>
    26. <tr>
    27. <td colspan="3" style="text-align: right;">
    28. <button type="button" onclick="totalMoney();">总计</button>
    29. </td>
    30. <td id="totalMoney"></td>
    31. </tr>
    32. </table>
  1. </body>
  2. <script type="text/javascript">
  3. /*
  4. 元素:
  5. 属性
  6. innerText : 获取标签内的文本
  7. innerHTML : 获取标签内的html
  8. 方法
  9. getElementsByTagName("标签名")
  10. getElementsByClassName("class属性名")
  11. */
  12. function totalMoney() {
  13. //1. 获取当前当前table 元素对象
  14. var table = document.getElementsByTagName("table")[0];
  15. //2. 获取table中 所有的tr
  16. var trs = table.getElementsByTagName("tr");
  17. var sum = 0;
  18. for(var i=1; i<trs.length-1; i++) {
  19. var tr = trs[i];
  20. //获取每个tr中的第四个td
  21. var td = tr.getElementsByTagName("td")[3];
  22. //获取td中文本(string)
  23. var money = td.innerText;
  24. sum += parseFloat(money);
  25. }
  26. //为元素的innerText属性赋值
  27. document.getElementById("totalMoney").innerHTML = sum;
  28. }
  29. </script>

  1. <a name="kN7pt"></a>
  2. ## 1.3通过js设置标签内容
  3. 所用的属性
  4. - innerHTML
  5. - innerText
  6. ```html
  7. <!DOCTYPE html>
  8. <html>
  9. <head>
  10. <meta charset="utf-8">
  11. <title></title>
  12. </head>
  13. <body>
  14. <p id="pi" class="pc" name="pn">
  15. </p>
  16. <p></p>
  17. </body>
  18. <script>
  19. var p1 = document.getElementById("pi");
  20. var p2 = document.getElementsByTagName("p")[1];
  21. var p3 = document.getElementsByClassName("pc")[0];
  22. var p4 = document.getElementsByName("pn")[0];
  23. /*
  24. innerHTML : 设置一个标签内部的html
  25. 如果文本包含html标签,会被解析
  26. innerText : 设置一个标签内部的文本
  27. 如果文本包含html标签,不会被解析
  28. */
  29. p1.innerHTML = '江郎<span style="color: red;">才</span>尽';
  30. p2.innerText = '江郎<span style="color: red;">才</span>尽';
  31. </script>
  32. </html>

1.4删除商品案例

所用的属性和方法

  • parentNode
  • remove() ```html <!DOCTYPE html>

    1. <meta charset="utf-8">
    2. <title></title>

    1. <table border="1px" width="400px">
    2. <tr>
    3. <td>商品名称</td>
    4. <td>价格</td>
    5. <td>数量</td>
    6. <td>金额</td>
    7. <td>操作</td>
    8. </tr>
    9. <tr>
    10. <td>iphone14</td>
    11. <td>8000</td>
    12. <td>2</td>
    13. <td>16000</td>
    14. <td>
    15. <button type="button" onclick="del(this)">删除</button>
    16. </td>
    17. </tr>
    18. <tr>
    19. <td>特斯拉Model4</td>
    20. <td>300000</td>
    21. <td>3</td>
    22. <td>900000</td>
    23. <td>
    24. <button type="button" onclick="del(this)">删除</button>
    25. </td>
    26. </tr>
    27. <tr>
    28. <td>外星人</td>
    29. <td>20000</td>
    30. <td>3</td>
    31. <td>60000</td>
    32. <td>
    33. <button type="button" onclick="del(this)">删除</button>
    34. </td>
    35. </tr>
    36. </table>
  1. </body>
  2. <script type="text/javascript">
  3. /*
  4. 在点击事件中执行的方法,可以通过this关键,把当前标签(元素传到)方法中
  5. */
  6. function del(btn) {
  7. var flag = confirm("确认删除该商品?");
  8. if (flag) {
  9. btn.parentNode.parentNode.remove();
  10. }
  11. }
  12. </script>

  1. <a name="Clqya"></a>
  2. ## 1.5通过js修改样式
  3. 修改样式:<br />元素对象.style.css属性 = 值;
  4. ```html
  5. <!DOCTYPE html>
  6. <html>
  7. <head>
  8. <meta charset="utf-8">
  9. <title></title>
  10. <style type="text/css">
  11. div {
  12. color: red;
  13. background-color: #0000FF;
  14. font-size: 20px;
  15. font-weight: 900;
  16. }
  17. </style>
  18. </head>
  19. <body>
  20. <p id="pi">江郎才尽</p>
  21. <div>大郎才不尽</div>
  22. </body>
  23. <script type="text/javascript">
  24. /*
  25. 可以通过元素对象的style属性定义该标签的样式
  26. 样式属性名和css属性名相对应
  27. css名使用中杠,style属性使用驼峰法
  28. color -- color
  29. font-size -- fontSize
  30. */
  31. var p = document.getElementById("pi");
  32. p.style.color = "red";
  33. p.style.backgroundColor="yellow";
  34. p.style.fontSize = "20px";
  35. p.style.fontWeight = 900;
  36. </script>
  37. </html>

2.html对象

每个标签,都是一个元素对象,但同时又是其独特的html对象
如:
input 是元素对象 同时它又是一个type=text的input对象
p 是元素对象 同时它又是一个p对象
因为不同的标签的html标签,可能会拥有自己独特的属性

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title></title>
  6. </head>
  7. <body>
  8. 用户名:<input id="realName" type="text" value="dd"/>
  9. <p id="pi"></p>
  10. <button type="button" onclick="disable(this)">禁用此按钮</button>
  11. </body>
  12. <script type="text/javascript">
  13. //元素对象
  14. var input = document.getElementById("realName");
  15. var p = document.getElementById("pi");
  16. /*
  17. input 元素对象 同时它又是一个type=text的input对象
  18. p 元素对象 同时它又是一个p对象
  19. 因为不同的标签的html标签,可能会拥有自己独特的属性
  20. */
  21. /*
  22. input是元素对象
  23. 可以使用元素对象,所有的属性和方法
  24. 同时它又是type=text的input html对象
  25. 可以使用该html对象的属性和方法
  26. */
  27. input.value = "hiahia";
  28. function disable(btn) {
  29. btn.disabled = true;
  30. }
  31. </script>
  32. </html>

3.购物车案例

1.1 添加购物车
1.2 计算总金额
1.3 删除商品
1.4 修改商品数量
1.5 如果添加重复商品,不新增一行,而是修改商品数量
1.6 添加,修改,删除商品,修改库存

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title></title>
  6. <style type="text/css">
  7. table {
  8. border-collapse: collapse;
  9. text-align: center;
  10. }
  11. </style>
  12. </head>
  13. <body>
  14. <h3 align="center">商品列表</h3>
  15. <table border="1px" width="400px" align="center">
  16. <tr>
  17. <td>商品名称</td>
  18. <td>价格</td>
  19. <td>库存</td>
  20. <td>操作</td>
  21. </tr>
  22. <tr>
  23. <td>iphone14</td>
  24. <td>8800</td>
  25. <td>10</td>
  26. <td>
  27. <button type="button" onclick="addCar(this)">加入购物车</button>
  28. </td>
  29. </tr>
  30. <tr>
  31. <td>华为mate50</td>
  32. <td>9000</td>
  33. <td>30</td>
  34. <td>
  35. <button type="button" onclick="addCar(this)">加入购物车</button>
  36. </td>
  37. </tr>
  38. <tr>
  39. <td>bate耳机</td>
  40. <td>1400</td>
  41. <td>30</td>
  42. <td>
  43. <button type="button" onclick="addCar(this)">加入购物车</button>
  44. </td>
  45. </tr>
  46. <tr>
  47. <td>VR眼睛</td>
  48. <td>4000</td>
  49. <td>15</td>
  50. <td>
  51. <button type="button" onclick="addCar(this)">加入购物车</button>
  52. </td>
  53. </tr>
  54. <tr>
  55. <td>PS5</td>
  56. <td>4000</td>
  57. <td>3</td>
  58. <td>
  59. <button type="button" onclick="addCar(this)">加入购物车</button>
  60. </td>
  61. </tr>
  62. </table>
  63. <h3 align="center">购物车</h3>
  64. <table border="1px" width="500px" align="center">
  65. <thead>
  66. <tr>
  67. <td>商品名称</td>
  68. <td>价格</td>
  69. <td>商品数量</td>
  70. <td>金额</td>
  71. <td>操作</td>
  72. </tr>
  73. </thead>
  74. <tbody id="productCar">
  75. <!-- <tr>
  76. <td>iphone14</td>
  77. <td>8800</td>
  78. <td>
  79. <button type="button">-</button>
  80. <span>1</span>
  81. <button type="button">+</button>
  82. </td>
  83. <td>8800</td>
  84. <td>
  85. <button type="button">删除</button>
  86. </td>
  87. </tr> -->
  88. </tbody>
  89. <tr>
  90. <td colspan="4">总计</td>
  91. <td id="totalMoney">0</td>
  92. </tr>
  93. </table>
  94. </body>
  95. <script type="text/javascript">
  96. //添加购物车的方法
  97. function addCar(btn){
  98. //获取tr
  99. var tr = btn.parentNode.parentNode;
  100. //获取当前tr下所有td
  101. var tds = tr.getElementsByTagName("td");
  102. //获取商品名称
  103. var proName = tds[0].innerText;
  104. //获取商品价格
  105. var proPrice = tds[1].innerText;
  106. //获取商品的库存对象
  107. var inventory = tds[2];
  108. //获取库存的数量
  109. var inNum = inventory.innerText;
  110. //判断库存是否为0
  111. if(inNum == 0){
  112. alert("没有库存了,加入购物车失败");
  113. return;
  114. }
  115. //获取购物车中的所有商品的名称
  116. var tbody = document.getElementById("productCar");
  117. var proCarTrs = tbody.getElementsByTagName("tr");
  118. for (var i = 0; i < proCarTrs.length; i++) {
  119. //如果商品已经存在,则只增加商品的数量
  120. if(proName == proCarTrs[i].getElementsByTagName("td")[0].innerText){
  121. changeNum(proCarTrs[i].getElementsByTagName("button")[1],1)
  122. return;
  123. }
  124. }
  125. var html = '<tr>'+
  126. '<td>'+proName+'</td>'+
  127. '<td>'+proPrice+'</td>'+
  128. '<td>'+
  129. '<button type="button" onclick="changeNum(this,-1)">-</button>'+
  130. ' <span>1</span> ' +
  131. '<button type="button" onclick="changeNum(this,1)">+</button>'+
  132. '</td>'+
  133. '<td>8800</td>'+
  134. '<td>'+
  135. '<button type="button" onclick="del(this)">删除</button>'+
  136. '</td>'+
  137. '</tr>';
  138. var newTr = tbody.insertRow();
  139. newTr.innerHTML = html;
  140. inventory.innerText = parseInt(inventory.innerText) - 1;
  141. sumMoney();
  142. }
  143. //计算总金额方法
  144. function sumMoney(){
  145. //获取所有商品金额
  146. var proCar = document.getElementById("productCar");
  147. //获取所有tr
  148. var trs = proCar.getElementsByTagName("tr");
  149. var sum = 0;
  150. //获取每个商品的金额
  151. for (var i = 0; i < trs.length; i++) {
  152. var money = trs[i].getElementsByTagName("td")[3].innerText;
  153. sum += parseFloat(money);
  154. }
  155. //将金额总计写入
  156. document.getElementById("totalMoney").innerText = sum;
  157. }
  158. //删除商品的方法
  159. function del(btn){
  160. if(confirm("是否删除该商品")){
  161. var tr = btn.parentNode.parentNode;
  162. var num = tr.getElementsByTagName("td")[2].getElementsByTagName("span")[0].innerText;
  163. carNum(btn,parseInt(num))
  164. btn.parentNode.parentNode.remove();
  165. }
  166. sumMoney();
  167. }
  168. //修改商品数量的方法
  169. function changeNum(btn,n){
  170. //获取商品的数量
  171. var td = btn.parentNode;
  172. var span = td.getElementsByTagName("span")[0];
  173. var num = span.innerText;
  174. //获得商品价格
  175. var tr = td.parentNode;
  176. var price = tr.getElementsByTagName("td")[1].innerText;
  177. //获取商品金额
  178. var money = tr.getElementsByTagName("td")[3];
  179. //判断商品数量是否大于0
  180. if(n == -1){
  181. if(num == 0){
  182. alert("数量为0");
  183. return;
  184. }
  185. }
  186. var flag = carNum(btn,-n);
  187. if(flag){
  188. return;
  189. }
  190. //商品数量写入span标签中
  191. span.innerText = parseInt(num)+n;
  192. //更新商品金额
  193. money.innerText = (parseInt(num)+n)*parseFloat(price);
  194. //更新总金额
  195. sumMoney();
  196. }
  197. //修改库存的方法
  198. function carNum(btn,n){
  199. //获取tr
  200. var trs = btn.parentNode.parentNode;
  201. //获取购物车的商品名称
  202. var td = trs.getElementsByTagName("td")[0];
  203. var CarName = td.innerText;
  204. //获取商品列表的对应商品
  205. var table = document.getElementsByTagName("table")[0];
  206. var tr = table.getElementsByTagName("tr");
  207. for (var i = 1; i < tr.length; i++) {
  208. var tds = tr[i].getElementsByTagName("td");
  209. if(CarName == tds[0].innerText){
  210. if(n == -1){
  211. if(tds[2].innerText == 0){
  212. alert("库存不足");
  213. return true;
  214. }
  215. }
  216. tds[2].innerText = parseInt(tds[2].innerText) + n;
  217. }
  218. }
  219. }
  220. </script>
  221. </html>