当前位置:   article > 正文

Web程序设计-实验05 DOM与BOM编程

Web程序设计-实验05 DOM与BOM编程

题目

【实验主题】

影视网站后台影视记录管理页设计

【实验任务】

1、浏览并分析多个网站后台的列表页面、编辑页面(详见参考资源,建议自行搜索更多后台页面)的主要元素构成和版面设计,借鉴并构思预期效果。

2、新建 index.html文件,合理运用HTML标记编写2个单元:[影视记录列表]、[记录编辑表单]。

1)[影视记录列表]建议用表格<table>系列标记组织,字段至少包含海报(显示缩略图)、影视名称、影视类别等,其余字段自行设计;同时包含 [操作]列,此列需有 [编辑]、[删除]2个超链接或者按钮。

2)[记录编辑表单]除了包含列表中的字段,还可添加剧情介绍等字段,同时包含 [保存]按钮。

3)在页面的恰当位置添加1个 [添加]超链接或者按钮。

4)页面初始打开时,列表应已经有至少 3条记录。

5)合理编写CSS样式,对列表、表单美化排版。

3、新建 .js文件,实现影视记录的增删改功能。

1)单击 [影视记录列表]某记录的 [删除],将显示确认对话框,得到确认后删除表中对应记录。

2)单击 [影视记录列表]某记录的 [编辑],表中对应记录的各字段值将填写到 [记录编辑表单]相应表单域;单击 [保存]按钮后将首先做字段非空等数据合规性校验,校验不通过则提示更正,通过则更新表中对应记录。

3)单击 [添加],清空 [记录编辑表单]各表单域;单击 [保存]按钮后将首先做字段非空等数据合规性校验,校验不通过则提示更正,通过则添加至列表。

4、(选做)与后端服务器数据同步。

1)在页面的恰当位置添加 [同步]和 [刷新]超链接或者按钮。

2)单击 [同步],以Ajax方式将列表全部记录同步至后端服务器。

提示1:Ajax工具集见下面的【实验提示】说明。

提示2:除了appKey参数,其余自定义参数建议尝试 post方式提交。

3)单击 [刷新],将刷新(重新加载)页面;编写页面初始化事件处理函数,以Ajax方式从后端获取数据,并呈现至 [影视记录列表]。

window.οnlοad=function(){

  //todo: 以Ajax方式从后端获取数据,初始化 [影视记录列表]

};

效果图展示

文件内容

index.html文件

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>后台影视记录管理</title>
  6. <link rel="stylesheet" href="style.css" />
  7. <script src="script.js"></script>
  8. </head>
  9. <body>
  10. <div class="recordlist">
  11. <h1>影视记录列表</h1>
  12. <table id="myTable">
  13. <tr>
  14. <th>海报</th>
  15. <th>影视名称</th>
  16. <th>影视类型</th>
  17. <th>影视主演</th>
  18. <th>简介</th>
  19. <th>操作</th>
  20. </tr>
  21. <tr>
  22. <td><img class="poster" src="1.png" alt="星际穿越" /></td>
  23. <td>星际穿越</td>
  24. <td>剧情/科幻/冒险</td>
  25. <td>
  26. 马修·麦康纳 / 安妮·海瑟薇 / 杰西卡·查斯坦 / 麦肯吉·弗依 / 卡西·阿弗莱克 / 迈克尔·凯恩 / 马特·达蒙 / 提莫西·查拉梅 / 艾伦·伯斯汀
  27. </td>
  28. <td>
  29. <textarea name="description" cols="25" rows="15">
  30. 近未来的地球黄沙遍野,小麦、秋葵等基础农作物相继因枯萎病灭绝,人类不再像从前那样仰望星空,放纵想象力和灵感的迸发,而是每日在沙尘暴的肆虐下倒数着所剩不多的光景。在家务农的前NASA宇航员库珀(马修·麦康纳 Matthew McConaughey 饰)接连在女儿墨菲(麦肯吉·弗依 Mackenzie Foy 饰)的书房发现奇怪的重力场现象,随即得知在某个未知区域内前NASA成员仍秘密进行一个拯救人类的计划。多年以前土星附近出现神秘虫洞,NASA借机将数名宇航员派遣到遥远的星系寻找适合居住的星球。在布兰德教授(迈克尔·凯恩 Michael Caine 饰)的劝说下,库珀忍痛告别了女儿,和其他三名专家教授女儿艾米莉亚·布兰德(安妮·海瑟薇 Anne Hathaway 饰)、罗米利(大卫·吉雅西 David Gyasi 饰)、多伊尔(韦斯·本特利 Wes Bentley 饰)搭乘宇宙飞船前往目前已知的最有希望的三颗星球考察。
  31. 他们穿越遥远的星系银河,感受了一小时七年光阴的沧海桑田,窥见了未知星球和黑洞的壮伟与神秘。在浩瀚宇宙的绝望而孤独角落,总有一份超越了时空的笃定情怀将他们紧紧相连……
  32. </textarea>
  33. </td>
  34. <td>
  35. <a href="#" class="edit-btn" onclick="editRow(this)">编辑</a>
  36. <a href="#" onclick="deleteRow(this)">删除</a>
  37. </td>
  38. </tr>
  39. <tr>
  40. <td><img class="poster" src="2.png" alt="这个杀手不太冷" /></td>
  41. <td>这个杀手不太冷</td>
  42. <td>剧情/动作/ 犯罪</td>
  43. <td>
  44. 让·雷诺 / 娜塔莉·波特曼 / 加里·奥德曼 / 丹尼·爱罗 / 彼得·阿佩尔 / 迈克尔·巴达鲁科 / 艾伦·格里尼 / 伊丽莎白·瑞根 / 卡尔·马图斯维奇 / 弗兰克·赛格 / 麦温
  45. </td>
  46. <td>
  47. <textarea name="description" cols="25" rows="15">
  48. 里昂(让·雷诺饰)是名孤独的职业杀手,受人雇佣。一天,邻居家小姑娘马蒂尔达(纳塔丽·波特曼饰)敲开他的房门,要求在他那里暂避杀身之祸。原来邻居家的主人是警方缉毒组的眼线,只因贪污了一小包毒品而遭恶警(加里·奥德曼饰)杀害全家的惩罚。马蒂尔达得到里昂的留救,幸免于难,并留在里昂那里。里昂教小女孩使枪,她教里昂法文,两人关系日趋亲密,相处融洽。
  49.   女孩想着去报仇,反倒被抓,里昂及时赶到,将女孩救回。混杂着哀怨情仇的正邪之战渐次升级,更大的冲突在所难免……
  50. </textarea>
  51. </td>
  52. <td>
  53. <a href="#" class="edit-btn" onclick="editRow(this)">编辑</a>
  54. <a href="#" onclick="deleteRow(this)">删除</a>
  55. </td>
  56. </tr>
  57. <tr>
  58. <td><img class="poster" src="3.png" alt="美丽人生" /></td>
  59. <td>美丽人生</td>
  60. <td>剧情/喜剧/爱情/战争</td>
  61. <td>
  62. 罗伯托·贝尼尼 / 尼可莱塔·布拉斯基 / 乔治·坎塔里尼 / 朱斯蒂诺·杜拉诺 / 赛尔乔·比尼·布斯特里克 / 玛丽萨·帕雷德斯 / 霍斯特·布赫霍尔茨 / 利迪娅·阿方西 /
  63. </td>
  64. <td>
  65. <textarea name="description" cols="25" rows="15">
  66.   犹太青年圭多(罗伯托·贝尼尼)邂逅美丽的女教师多拉(尼可莱塔·布拉斯基),他彬彬有礼的向多拉鞠躬:“早安!公主!”。历经诸多令人啼笑皆非的周折后,天遂人愿,两人幸福美满的生活在一起。
  67.   然而好景不长,法西斯政权下,圭多和儿子被强行送往犹太人集中营。多拉虽没有犹太血统,毅然同行,与丈夫儿子分开关押在一个集中营里。聪明乐天的圭多哄骗儿子这只是一场游戏,奖品就是一辆大坦克,儿子快乐、天真的生活在纳粹的阴霾之中。尽管集中营的生活艰苦寂寞,圭多仍然带给他人很多快乐,他还趁机在纳粹的广播里问候妻子:“早安!公主!”
  68.   法西斯政权即将倾覆,纳粹的集中营很快就要接受最后的清理,圭多编给儿子的游戏该怎么结束?他们一家能否平安的度过这黑暗的年代呢?
  69. </textarea>
  70. </td>
  71. <td>
  72. <a href="#" class="edit-btn" onclick="editRow(this)">编辑</a>
  73. <a href="#" onclick="deleteRow(this)">删除</a>
  74. </td>
  75. </tr>
  76. </table>
  77. </div>
  78. <div class="editlist">
  79. <h1>记录编辑表单(缩小页面更方便)</h1>
  80. <div class="form">
  81. 海报:<select name="poster">
  82. <option value="1.png" style="width: 100px;">星际穿越</option>
  83. <option value="2.png" style="width: 100px;">这个杀手不太冷</option>
  84. <option value="3.png" style="width: 100px;">美丽人生</option>
  85. <option value="4.png" style="width: 100px;">绿皮书</option>
  86. <option value="5.png" style="width: 100px;">让子弹飞</option>
  87. <option value="6.png" style="width: 100px;">重庆谈判</option>
  88. <option value="7.png" style="width: 100px;">海棠依旧</option>
  89. <option value="8.png" style="width: 100px;">古田军号</option>
  90. </select> <br />
  91. 影视名称:<input type="text" name="filmname"> <br />
  92. 影视类型:<input type="text" name="category"> <br />
  93. 影视主演:<input type="text" name="actors"> <br />
  94. 简介:<textarea name="description111" cols="40" rows="20"></textarea> <br />
  95. <button id="alter" onclick="saveChanges()">保存</button>
  96. <button id="add">添加</button>
  97. <button id="clearforM" onclick="clearForm()">清空</button>
  98. </div>
  99. </div>
  100. <script>
  101. //添加记录
  102. document.getElementById("add").addEventListener("click", function() {
  103. var poster = document.getElementsByName("poster")[0].value;
  104. var filmname = document.getElementsByName("filmname")[0].value;
  105. var category = document.getElementsByName("category")[0].value;
  106. var actors = document.getElementsByName("actors")[0].value;
  107. var description = document.getElementsByName("description111")[0].value;
  108. if (!poster || !filmname.trim() || !category.trim() || !actors.trim() || !description.trim()) {
  109. alert("请填写完整内容!");
  110. return;
  111. }
  112. var table = document.getElementById("myTable");
  113. var newRow = table.insertRow(-1);
  114. var cell1 = newRow.insertCell(0);
  115. var cell2 = newRow.insertCell(1);
  116. var cell3 = newRow.insertCell(2);
  117. var cell4 = newRow.insertCell(3);
  118. var cell5 = newRow.insertCell(4);
  119. var cell6 = newRow.insertCell(5);
  120. cell1.innerHTML = '<img class="poster" src="' + poster + '" alt="' + filmname + '" />';
  121. cell2.textContent = filmname;
  122. cell3.textContent = category;
  123. cell4.textContent = actors;
  124. cell5.innerHTML = '<textarea name="description" cols="25" rows="15">' + description + '</textarea>';
  125. cell6.innerHTML =
  126. '<a href="#" class="edit-btn" onclick="editRow(this)">编辑</a> <a href="#" onclick="deleteRow(this)">删除</a>';
  127. alert("成功添加记录!");
  128. });
  129. </script>
  130. </body>
  131. </html>

style.css文件

  1. * {
  2. margin: 0;
  3. padding: 0;
  4. /* 清除用户代理样式 */
  5. }
  6. .recordlist {
  7. float: left;
  8. /* 浮动,缩小页面能够方便操作 */
  9. margin: 20px;
  10. font-size: 20px;
  11. }
  12. .editlist {
  13. margin: 20px;
  14. float: left;
  15. /* 浮动,缩小页面能够方便操作 */
  16. }
  17. h1 {
  18. text-align: center;
  19. margin-top: 10px;
  20. margin-bottom: 20px;
  21. }
  22. table {
  23. margin: 0 auto;
  24. font-family: Arial, Helvetica, sans-serif;
  25. border-collapse: collapse;
  26. }
  27. td,
  28. th {
  29. width: 200px;
  30. text-align: center;
  31. border: 1px lightpink solid;
  32. z'z' z'z' z'z' z'z
  33. padding: 10px;
  34. }
  35. img {
  36. width: 180px;
  37. margin: 0 auto;
  38. display: block;
  39. }
  40. .form {
  41. text-align: center;
  42. margin-bottom: 30px;
  43. font-size: 30px;
  44. }
  45. .form select {
  46. font-size: 30px;
  47. margin-bottom: 30px;
  48. }
  49. .form input {
  50. margin-right: 10px;
  51. margin-bottom: 30px;
  52. font-size: 30px;
  53. }
  54. .form button {
  55. margin-top: 30px;
  56. font-size: 30px;
  57. }

script.js文件

  1. function deleteRow(btnDelete) {
  2. const confirmDelete = confirm("你确定要删除这条记录?");
  3. if (confirmDelete) {
  4. //获得被单击按钮所在行的索引
  5. var currentIndex = btnDelete.parentNode.parentNode.rowIndex;
  6. var myTable = document.getElementById("myTable");
  7. myTable.deleteRow(currentIndex);
  8. }
  9. }
  10. function editRow(editButton) {
  11. var row = editButton.parentNode.parentNode;
  12. var tableCells = row.getElementsByTagName("td");
  13. document.getElementsByName("poster")[0].value = tableCells[0].getElementsByTagName("img")[0].src.match(
  14. /(\d\.png)$/)[0];
  15. document.getElementsByName("filmname")[0].value = tableCells[1].textContent;
  16. document.getElementsByName("category")[0].value = tableCells[2].textContent;
  17. document.getElementsByName("actors")[0].value = tableCells[3].textContent;
  18. document.getElementsByName("description111")[0].value = tableCells[4].getElementsByTagName("textarea")[0].value;
  19. document.getElementById("alter").setAttribute("data-current-index", row.rowIndex);
  20. }
  21. function saveChanges() {
  22. var poster = document.getElementsByName("poster")[0].value;
  23. var filmname = document.getElementsByName("filmname")[0].value;
  24. var category = document.getElementsByName("category")[0].value;
  25. var actors = document.getElementsByName("actors")[0].value;
  26. var description = document.getElementsByName("description111")[0].value;
  27. if (!poster || !filmname.trim() || !category.trim() || !actors.trim() || !description.trim()) {
  28. alert("请填写完整内容!");
  29. return;
  30. }
  31. var index = document.getElementById("alter").getAttribute("data-current-index");
  32. if (index) {
  33. var myTable = document.getElementById("myTable");
  34. var row = myTable.rows[index];
  35. row.cells[0].getElementsByTagName("img")[0].src = poster;
  36. row.cells[1].textContent = filmname;
  37. row.cells[2].textContent = category;
  38. row.cells[3].textContent = actors;
  39. row.cells[4].getElementsByTagName("textarea")[0].value = description;
  40. }
  41. document.getElementById("alter").removeAttribute("data-current-index");
  42. alert("确定要更新记录吗?");
  43. }
  44. function clearForm() {
  45. var formElements = document.querySelectorAll('.form input[type="text"], .form textarea, .form select');
  46. formElements.forEach(function(element) {
  47. element.value = '';
  48. });
  49. }

图片文件

1.png

2.png

3.png

4.png

5.png

6.png

7.png

8.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/655142
推荐阅读
相关标签
  

闽ICP备14008679号