无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 1712|回复: 23
打印 上一主题 下一主题

[刚更新了一次] 为了证明我 不是大大说的玻璃心 再发一个 呵呵!

[复制链接]
跳转到指定楼层
1#
发表于 2025-8-8 14:01:03 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 879792799 于 2025-8-18 11:48 编辑

更新了一下  在2楼  比较随意 以后慢慢改  

本文代码大部分参考https://zhuanlan.zhihu.com/p/698006468?_refluxos=a10 -----有点问题就是手机上无法用我已修改
也参考这篇https://juejin.cn/post/7351691676917170187   





第11行 zoom:50%; 自己调整缩放大小!
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7.     <title>拖拽实现排课</title>
  8.     <style>
  9.         body {
  10.                
  11.             zoom:50%;
  12.             margin: 0;
  13.             padding: 0;
  14.             display: flex;
  15.             justify-content: center;
  16.             align-items: center;
  17.             height: 100vh;
  18.             background-color: #f0f0f0;
  19.         }
  20.                
  21.         .box {
  22.             width: 1000px;
  23.             height: 600px;
  24.             display: flex;
  25.             padding: 5px;
  26.             box-sizing: border-box;
  27.         }
  28.                
  29.         .left {
  30.                     margin: 0;
  31.             padding: 0;
  32.             width: 620px;
  33.             display: flex;
  34.                         box-sizing: border-box;
  35.                         font-size: 29px;
  36.                         
  37.         }
  38.                
  39.       
  40.                
  41.         .yu { background: #999999;
  42.     width: 180px; height: 70px; line-height: 70px;
  43.     padding: 2px;
  44.     text-align: center;
  45.     overflow: hidden;
  46.     text-overflow: ellipsis;
  47.     white-space: nowrap;
  48.      margin: 10px;
  49. }

  50.         .yi { background: #FC6B66;
  51.     width: 180px; height: 70px; line-height: 70px;
  52.     padding: 2px;
  53.     text-align: center;
  54.     overflow: hidden;
  55.     text-overflow: ellipsis;
  56.     white-space: nowrap;
  57.      margin: 10px;
  58. }


  59.   .wuu { background: #09496C;
  60.     width: 180px; height: 70px; line-height: 70px;
  61.     padding: 2px;
  62.     text-align: center;
  63.     overflow: hidden;
  64.     text-overflow: ellipsis;
  65.     white-space: nowrap;
  66.      margin: 10px;
  67. }

  68.         .shu { background: skyblue; width: 180px; height: 70px; line-height: 70px;
  69.     padding: 2px;
  70.     text-align: center;
  71.     overflow: hidden;
  72.     text-overflow: ellipsis;
  73.     white-space: nowrap;
  74.       margin: 10px;
  75.     }
  76.         .ying { background: mediumslateblue;width: 180px; height: 70px;line-height: 70px;
  77.     padding: 2px;
  78.     text-align: center;
  79.     overflow: hidden;
  80.     text-overflow: ellipsis;
  81.     white-space: nowrap;  margin: 10px;
  82.     }
  83.         .wu { background: aqua; width: 180px; height: 70px; line-height: 70px;
  84.     padding: 2px;
  85.     text-align: center;
  86.     overflow: hidden;
  87.     text-overflow: ellipsis;
  88.     white-space: nowrap;  margin: 10px;
  89.     }
  90.         .hua { background: violet; width: 180px; height: 70px; line-height: 70px;
  91.     padding: 2px;
  92.     text-align: center;
  93.     overflow: hidden;
  94.     text-overflow: ellipsis;
  95.     white-space: nowrap; margin: 10px;
  96.     }
  97.         .sheng { background: navajowhite; width: 180px; height: 70px; line-height: 70px;
  98.     padding: 2px;
  99.     text-align: center;
  100.     overflow: hidden;
  101.     text-overflow: ellipsis;
  102.     white-space: nowrap; margin: 10px;
  103.     }

  104.      
  105.         
  106.         .right { background: rgb(238, 238, 238); padding: 0px; height: fit-content; font-size: 25px;}

  107. .info { display: flex; justify-content: center; }


  108. table { font-family: monospace; table-layout: fixed;  margin-bottom: 20px; }
  109. table.colorless .item { background: unset; color: unset; }



  110. td, th { border: 1px solid rgb(153, 153, 153); height: 60px; line-height: 60px; padding: 2px; text-align: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

  111. th { font-weight: normal; background: rgb(204, 204, 204); }

  112. td[data-drop="copy"] { width: 80px; }

  113. thead th.editable { width: 176px; height: 60px; }

  114. thead th.controlable.editable { width: 80px; height: 60px; }

  115. tbody th.controlable.editable { width: 44px; height: auto; }

  116. tbody td.controlable.editable { width: 124px; height: 60px; }

  117. tbody td.editable { width: auto; height: 60px; }

  118. body td { width: 80px; height: 60px; position: relative; }
  119.     </style>
  120. </head>
  121. <body>

  122.     <div class="box">
  123.         

  124.         <div class="right">
  125. <div class="content" id="content">
  126.   <div class="left">
  127.         <div class="yu" draggable="true">语文</div>
  128.         <div class="shu" draggable="true">数学</div>
  129.         <div class="ying" draggable="true">英语</div>
  130.         <div class="wu" draggable="true">物理</div>
  131.         
  132.   </div>
  133.   <div class="left">
  134.   <div class="hua" draggable="true">化学</div>
  135.   <div class="sheng" draggable="true">地理</div>
  136.   <div class="yi" draggable="true">音乐</div>
  137.   <div class="wuu" draggable="true">武术</div>
  138.   </div>

  139.   <div class="info"><h1 class="editable">离线本地存储-可拖拽小学课表</h1>  </div>

  140.   <table>
  141.     <colgroup>
  142.       <col>
  143.       <col>
  144.       <col>
  145.       <col>
  146.       <col>
  147.       <col>
  148.       <col>
  149.       <col>
  150.     </colgroup>
  151.     <thead>
  152.       <tr>
  153.         <th class="editable" colspan="2">时间</th>
  154.         <th class="controlable editable">星期一</th>
  155.         <th class="controlable editable">星期二</th>
  156.         <th class="controlable editable">星期三</th>
  157.         <th class="controlable editable">星期四</th>
  158.         <th class="controlable editable">星期五</th>
  159.       
  160.       </tr>
  161.     </thead>
  162.     <tbody>
  163.       <tr>
  164.         <th class="controlable editable" rowspan="6">上午</th>
  165.         <td class="controlable editable">08:00-08:30</td>
  166.         <td class="editable" colspan="5" data-controlable="split">早读</td>
  167.       </tr>
  168.       <tr>
  169.         <td class="controlable editable">08:35-9:20</td>
  170.         <td data-drop="copy" data-controlable="merge"></td>
  171.         <td data-drop="copy"></td>
  172.         <td data-drop="copy"></td>
  173.         <td data-drop="copy"></td>
  174.         <td data-drop="copy"></td>
  175.       
  176.       </tr>
  177.       <tr>
  178.         <td class="controlable editable">9:30-10:15</td>
  179.         <td data-drop="copy" data-controlable="merge"></td>
  180.         <td data-drop="copy"></td>
  181.         <td data-drop="copy"></td>
  182.         <td data-drop="copy"></td>
  183.         <td data-drop="copy"></td>
  184.   
  185.       </tr>
  186.       <tr>
  187.         <td class="controlable editable">10:15-10:40</td>
  188.         <td class="editable" colspan="5" data-controlable="split">课间操</td>
  189.       </tr>
  190.       <tr>
  191.         <td class="controlable editable">10:40-11:25</td>
  192.         <td data-drop="copy" data-controlable="merge"></td>
  193.         <td data-drop="copy"></td>
  194.         <td data-drop="copy"></td>
  195.         <td data-drop="copy"></td>
  196.         <td data-drop="copy"></td>
  197.       
  198.       </tr>
  199.       <tr>
  200.         <td class="controlable editable">11:35-12:20</td>
  201.         <td data-drop="copy" data-controlable="merge"></td>
  202.         <td data-drop="copy"></td>
  203.         <td data-drop="copy" class=""></td>
  204.         <td data-drop="copy" class=""></td>
  205.         <td data-drop="copy" class=""></td>
  206.       
  207.       </tr>
  208.       <tr>
  209.         <th class="controlable editable" rowspan="1">中午</th>
  210.         <td class="controlable editable">12:20-15:30</td>
  211.         <td class="editable" colspan="5" data-controlable="split">午休</td>
  212.       </tr>
  213.       <tr>
  214.         <th class="controlable editable" rowspan="5">下午</th>
  215.         <td class="controlable editable">15:35-16:20</td>
  216.         <td data-drop="copy" data-controlable="merge" class=""></td>
  217.         <td data-drop="copy" class=""></td>
  218.         <td data-drop="copy" class=""></td>
  219.         <td data-drop="copy" class=""></td>
  220.         <td data-drop="copy" class=""></td>
  221.    
  222.       </tr>
  223.       <tr>
  224.         <td class="controlable editable">16:30-17:15</td>
  225.         <td data-drop="copy" data-controlable="merge"></td>
  226.         <td data-drop="copy" class=""></td>
  227.         <td data-drop="copy" class=""></td>
  228.         <td data-drop="copy" class=""></td>
  229.         <td data-drop="copy" class=""></td>
  230.       
  231.       </tr>
  232.       <tr>
  233.         <td class="controlable editable">17:15-17:30</td>
  234.         <td class="editable" colspan="5" data-controlable="split">眼保健操</td>
  235.       </tr>
  236.       <tr>
  237.         <td class="controlable editable">17:30-18:15</td>
  238.         <td data-drop="copy" data-controlable="merge"></td>
  239.         <td data-drop="copy"></td>
  240.         <td data-drop="copy"></td>
  241.         <td data-drop="copy"></td>
  242.         <td data-drop="copy"></td>

  243.       </tr>
  244.       <tr>
  245.         <td class="controlable editable">18:25-19:10</td>
  246.         <td data-drop="copy" data-controlable="merge"></td>
  247.         <td data-drop="copy"></td>
  248.         <td data-drop="copy"></td>
  249.         <td data-drop="copy"></td>
  250.         <td data-drop="copy"></td>

  251.       </tr>
  252.       
  253.     </tbody>
  254.   </table>

  255.                
  256.         
  257.     </div>
  258.                 </div>
  259.           </div>
  260.     <script>
  261.    
  262.           document.addEventListener('DOMContentLoaded', function () {

  263.   //定义数组
  264. //  if (this.localStorage.getItem('contentHTML')) {
  265.    
  266. //alert('数据已从 localStorage 加载成功');
  267.   //}

  268. loadpoition() ;
  269.          

  270.        // 获取所有可拖动的课程项
  271.         const draggables = document.querySelectorAll('.left > div');
  272.         // 获取所有可放置课程的时间段单元格(不包括第一列)
  273.         const droppables = document.querySelectorAll('.right td:not(:first-child)');

  274.         // 添加拖拽开始事件监听器
  275.         draggables.forEach(draggable => {
  276.             draggable.addEventListener('dragstart', e => {
  277.                 e.dataTransfer.setData('text/plain', e.target.className);
  278.                 e.dataTransfer.dropEffect = 'move';
  279.             });
  280.         });

  281.         // 添加拖拽进入和放置事件监听器
  282.         droppables.forEach(droppable => {
  283.             droppable.addEventListener('dragover', e => {
  284.                 e.preventDefault();
  285.                 e.dataTransfer.dropEffect = 'move';
  286.             });

  287.             droppable.addEventListener('drop', e => {
  288.                 e.preventDefault();
  289.                 const draggedItemClass = e.dataTransfer.getData('text/plain');
  290.                 const draggedItem = document.querySelector(`.${draggedItemClass}`);

  291.                 if (e.target.tagName === 'TD') {
  292.                     e.target.textContent = draggedItem.textContent;
  293.                     e.target.style.backgroundColor = window.getComputedStyle(draggedItem).backgroundColor;
  294.                 }
  295.                
  296.                 archive()         
  297.             });
  298.         });





  299.           });
  300.          
  301. // 读档
  302. function loadpoition() {
  303.   const contentHTML = localStorage.getItem('contentHTML');

  304.   let contentLoaded = false;

  305.   if (contentHTML) {
  306.     const contentElement = document.querySelector('.right');
  307.     if (contentElement) {
  308.       contentElement.outerHTML = contentHTML;
  309.       contentLoaded = true; // 标记content元素已加载
  310.     } else {
  311.       console.warn('页面上未找到类名为 "content" 的元素。');
  312.     }
  313.   }

  314.   // 检查两个元素是否都已成功加载
  315.   if (contentLoaded) {
  316.   //  alert('数据已从 localStorage 加载成功');
  317.   
  318.   }
  319. }
  320.             // 存档
  321. function archive() {
  322.   const contentElement = document.querySelector('.right');

  323.   if (contentElement) {
  324.     const contentHTML = contentElement.outerHTML;
  325.     localStorage.setItem('contentHTML', contentHTML);
  326.   }
  327. // alert('数据已保存到 localStorage');
  328. }
  329.    
  330.    
  331.   
  332.         
  333.         
  334.     </script>
  335. </body>
  336. </html>
复制代码



点评

本人菜鸟不保证能用 抛砖引玉 希望大大改进!  发表于 2025-8-8 14:04
22#
发表于 2 小时前 | 只看该作者
879792799 发表于 2025-8-18 11:47
重置按钮已添加在2楼

你说的难度有点大 要不你就用这个吧---只能电脑上用 符合你要求  ...

已经很好了,谢谢。
回复

使用道具 举报

21#
 楼主| 发表于 昨天 11:47 | 只看该作者
xtwwz 发表于 2025-8-18 00:31
课程可以扩展么,比如扩展到初中、高中里有的课程?如能给出一些修改建议,就更好了。

   
重置按钮已添加在2楼

你说的难度有点大 要不你就用这个吧---只能电脑上用 符合你要求
唯一办法只能修改 https://zhuanlan.zhihu.com/p/698006468?_refluxos=a10 -----有点问题就是手机上无法用
不过我试过一次没成功,有空我再试试

点评

已经很好了,谢谢。  详情 回复 发表于 2 小时前
回复

使用道具 举报

20#
发表于 昨天 00:31 | 只看该作者
课程可以扩展么,比如扩展到初中、高中里有的课程?如能给出一些修改建议,就更好了。

点评

重置按钮已添加在2楼 你说的难度有点大 要不你就用这个吧---只能电脑上用 符合你要求 唯一办法只能修改 https://zhuanlan.zhihu.com/p/698006468?_refluxos=a10 -----有点问题就是手机上无法用  详情 回复 发表于 昨天 11:47
回复

使用道具 举报

19#
发表于 前天 03:54 | 只看该作者
可加个按钮,一键复位,还原到拖动前的状态。

评分

参与人数 1无忧币 +5 收起 理由
879792799 + 5 ok 这个可以有 到时一起加上!

查看全部评分

回复

使用道具 举报

18#
 楼主| 发表于 3 天前 | 只看该作者
准备加个遮罩层来提示当天课程  更加直观!!请关注最近要更新一下!
回复

使用道具 举报

17#
发表于 2025-8-11 05:59:00 | 只看该作者
我是爱钻 牛角尖 的执着人!

评分

参与人数 1无忧币 +2 收起 理由
879792799 + 2 赞一个!

查看全部评分

回复

使用道具 举报

16#
发表于 2025-8-10 08:26:10 | 只看该作者
还 特意搜了下 楼主的帖子

感觉 是一个喜欢 钻研 很有想法的人   给你顶

评分

参与人数 1无忧币 +5 收起 理由
879792799 + 5 谢谢大大的眼光!

查看全部评分

回复

使用道具 举报

15#
发表于 2025-8-9 13:53:16 | 只看该作者
楼主的想法 可以呀 想法很奇特 有点意思  

点评

呵呵 兴趣使然!  发表于 2025-8-10 19:59
回复

使用道具 举报

14#
发表于 2025-8-9 08:43:48 | 只看该作者
感谢分享
回复

使用道具 举报

13#
发表于 2025-8-9 08:11:40 | 只看该作者
有课代表没有?
回复

使用道具 举报

12#
发表于 2025-8-9 07:41:54 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

11#
发表于 2025-8-9 06:01:28 | 只看该作者
谢谢分享
回复

使用道具 举报

10#
发表于 2025-8-8 20:40:28 | 只看该作者
版主不是玻璃心 是爱钻牛角尖的执着好男儿!

评分

参与人数 1无忧币 +5 收起 理由
879792799 + 5 感谢 感谢!!

查看全部评分

回复

使用道具 举报

9#
发表于 2025-8-8 20:19:33 | 只看该作者
有点东西的
回复

使用道具 举报

8#
发表于 2025-8-8 17:56:02 | 只看该作者
感觉挺方便的
回复

使用道具 举报

7#
发表于 2025-8-8 15:17:00 | 只看该作者
谢谢分享
回复

使用道具 举报

6#
发表于 2025-8-8 15:10:51 | 只看该作者
这真是有点东西的
回复

使用道具 举报

5#
发表于 2025-8-8 14:49:07 | 只看该作者
感谢分享
回复

使用道具 举报

4#
发表于 2025-8-8 14:25:34 | 只看该作者
感謝大大辛苦分享!感恩!^^
回复

使用道具 举报

3#
发表于 2025-8-8 14:24:30 | 只看该作者
做的不错 支持了
回复

使用道具 举报

2#
 楼主| 发表于 2025-8-8 14:02:26 | 只看该作者
本帖最后由 879792799 于 2025-8-18 11:41 编辑

修改一下比较凑活,   需要自己再改该


增加了  
1当前星期指示框   
2加了重置按钮

指示框位置不对 自行修改336行 等等  drawhq(220)   220可以调整左右X坐标
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7.     <title>拖拽实现排课</title>
  8.     <style>
  9.         body {
  10.                
  11.             zoom:50%;
  12.             margin: 0;
  13.             padding: 0;
  14.             display: flex;
  15.             justify-content: center;
  16.             align-items: center;
  17.             height: 100vh;
  18.             
  19.         }
  20.                
  21.         .box {
  22.             width: 1000px;
  23.             height: 600px;
  24.             display: flex;
  25.             padding: 5px;
  26.             box-sizing: border-box;
  27.         }
  28.             
  29.             
  30.    .table-container {
  31.         position: relative;
  32.         width: 600px; /* 容器宽度,根据需求调整 */
  33.         height: 1000px; /* 容器高度,根据需求调整 */
  34.     }
  35.        
  36.     .table, .svg {
  37.         position: absolute;
  38.         top: 0;
  39.         left: 0;
  40.     }
  41.        
  42.     .table {
  43.         z-index: 1; /* 表格1在下方 */
  44.     }
  45.        
  46. .svg {
  47.      z-index:2; /* 表格2在上方 */
  48.     }   
  49.             
  50.             
  51.                
  52.         .left {
  53.                     margin: 0;
  54.             padding: 0;
  55.             width: 620px;
  56.             display: flex;
  57.                         box-sizing: border-box;
  58.                         font-size: 29px;
  59.                         
  60.         }
  61.                
  62.       
  63.                
  64.         .yu { background: #999999;
  65.     width: 180px; height: 70px; line-height: 70px;
  66.     padding: 2px;
  67.     text-align: center;
  68.     overflow: hidden;
  69.     text-overflow: ellipsis;
  70.     white-space: nowrap;
  71.      margin: 10px;
  72. }

  73.         .yi { background: #FC6B66;
  74.     width: 180px; height: 70px; line-height: 70px;
  75.     padding: 2px;
  76.     text-align: center;
  77.     overflow: hidden;
  78.     text-overflow: ellipsis;
  79.     white-space: nowrap;
  80.      margin: 10px;
  81. }


  82.   .wuu { background: #09496C;
  83.     width: 180px; height: 70px; line-height: 70px;
  84.     padding: 2px;
  85.     text-align: center;
  86.     overflow: hidden;
  87.     text-overflow: ellipsis;
  88.     white-space: nowrap;
  89.      margin: 10px;
  90. }

  91.         .shu { background: skyblue; width: 180px; height: 70px; line-height: 70px;
  92.     padding: 2px;
  93.     text-align: center;
  94.     overflow: hidden;
  95.     text-overflow: ellipsis;
  96.     white-space: nowrap;
  97.       margin: 10px;
  98.     }
  99.         .ying { background: mediumslateblue;width: 180px; height: 70px;line-height: 70px;
  100.     padding: 2px;
  101.     text-align: center;
  102.     overflow: hidden;
  103.     text-overflow: ellipsis;
  104.     white-space: nowrap;  margin: 10px;
  105.     }
  106.         .wu { background: aqua; width: 180px; height: 70px; line-height: 70px;
  107.     padding: 2px;
  108.     text-align: center;
  109.     overflow: hidden;
  110.     text-overflow: ellipsis;
  111.     white-space: nowrap;  margin: 10px;
  112.     }
  113.         .hua { background: violet; width: 180px; height: 70px; line-height: 70px;
  114.     padding: 2px;
  115.     text-align: center;
  116.     overflow: hidden;
  117.     text-overflow: ellipsis;
  118.     white-space: nowrap; margin: 10px;
  119.     }
  120.         .sheng { background: navajowhite; width: 180px; height: 70px; line-height: 70px;
  121.     padding: 2px;
  122.     text-align: center;
  123.     overflow: hidden;
  124.     text-overflow: ellipsis;
  125.     white-space: nowrap; margin: 10px;
  126.     }

  127.      
  128.         
  129.         .right {  padding: 0px; height: fit-content; font-size: 25px;
  130.                 z-index: 1; /* 表格1在下方 */
  131.                 }

  132. .info { display: flex; justify-content: center; }



  133. table.colorless .item { color: unset;
  134. z-index: 1; /* 表格1在下方 */
  135. }



  136. td, th { border: 1px solid rgb(153, 153, 153); height: 60px; line-height: 60px; padding: 2px; text-align: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

  137. th { font-weight: normal;  }

  138. td[data-drop="copy"] { width: 80px; }

  139. thead th.editable { width: 176px; height: 60px; }

  140. thead th.controlable.editable { width: 80px; height: 60px; }

  141. tbody th.controlable.editable { width: 44px; height: auto; }

  142. tbody td.controlable.editable { width: 124px; height: 60px; }

  143. tbody td.editable { width: auto; height: 60px; }

  144. body td { width: 80px; height: 60px; position: relative; }
  145.     </style>
  146. </head>
  147. <body>

  148.     <div class="box">
  149.         

  150.         <div class="right">
  151. <div class="content" id="content">
  152.   <div class="left">
  153.         <div class="yu" draggable="true">语文</div>
  154.         <div class="shu" draggable="true">数学</div>
  155.         <div class="ying" draggable="true">英语</div>
  156.         <div class="wu" draggable="true">物理</div>
  157.         
  158.   </div>
  159.   <div class="left">
  160.   <div class="hua" draggable="true">化学</div>
  161.   <div class="sheng" draggable="true">地理</div>
  162.   <div class="yi" draggable="true">音乐</div>
  163.   <div class="wuu" draggable="true">武术</div>
  164.   <button class="button init" onclick="init()">重置</button>
  165.   </div>

  166.   <div class="info"><h1 class="editable">离线本地存储-可拖拽小学课表</h1>  </div>
  167. <div class="table-container">
  168.   <table     class="table">
  169.     <colgroup>
  170.       <col>
  171.       <col>
  172.       <col>
  173.       <col>
  174.       <col>
  175.       <col>
  176.       <col>
  177.       <col>
  178.     </colgroup>
  179.     <thead>
  180.       <tr>
  181.         <th class="editable" colspan="2">时间</th>
  182.         <th class="controlable editable">星期一</th>
  183.         <th class="controlable editable">星期二</th>
  184.         <th class="controlable editable">星期三</th>
  185.         <th class="controlable editable">星期四</th>
  186.         <th class="controlable editable">星期五</th>
  187.       
  188.       </tr>
  189.     </thead>
  190.     <tbody>
  191.       <tr>
  192.         <th class="controlable editable" rowspan="6">上午</th>
  193.         <td class="controlable editable">08:00-08:30</td>
  194.         <td class="editable" colspan="5" data-controlable="split">早读</td>
  195.       </tr>
  196.       <tr>
  197.         <td class="controlable editable">08:35-9:20</td>
  198.         <td data-drop="copy" data-controlable="merge"></td>
  199.         <td data-drop="copy"></td>
  200.         <td data-drop="copy"></td>
  201.         <td data-drop="copy"></td>
  202.         <td data-drop="copy"></td>
  203.       
  204.       </tr>
  205.       <tr>
  206.         <td class="controlable editable">9:30-10:15</td>
  207.         <td data-drop="copy" data-controlable="merge"></td>
  208.         <td data-drop="copy"></td>
  209.         <td data-drop="copy"></td>
  210.         <td data-drop="copy"></td>
  211.         <td data-drop="copy"></td>
  212.   
  213.       </tr>
  214.       <tr>
  215.         <td class="controlable editable">10:15-10:40</td>
  216.         <td class="editable" colspan="5" data-controlable="split">课间操</td>
  217.       </tr>
  218.       <tr>
  219.         <td class="controlable editable">10:40-11:25</td>
  220.         <td data-drop="copy" data-controlable="merge"></td>
  221.         <td data-drop="copy"></td>
  222.         <td data-drop="copy"></td>
  223.         <td data-drop="copy"></td>
  224.         <td data-drop="copy"></td>
  225.       
  226.       </tr>
  227.       <tr>
  228.         <td class="controlable editable">11:35-12:20</td>
  229.         <td data-drop="copy" data-controlable="merge"></td>
  230.         <td data-drop="copy"></td>
  231.         <td data-drop="copy" class=""></td>
  232.         <td data-drop="copy" class=""></td>
  233.         <td data-drop="copy" class=""></td>
  234.       
  235.       </tr>
  236.       <tr>
  237.         <th class="controlable editable" rowspan="1">中午</th>
  238.         <td class="controlable editable">12:20-15:30</td>
  239.         <td class="editable" colspan="5" data-controlable="split">午休</td>
  240.       </tr>
  241.       <tr>
  242.         <th class="controlable editable" rowspan="5">下午</th>
  243.         <td class="controlable editable">15:35-16:20</td>
  244.         <td data-drop="copy" data-controlable="merge" class=""></td>
  245.         <td data-drop="copy" class=""></td>
  246.         <td data-drop="copy" class=""></td>
  247.         <td data-drop="copy" class=""></td>
  248.         <td data-drop="copy" class=""></td>
  249.    
  250.       </tr>
  251.       <tr>
  252.         <td class="controlable editable">16:30-17:15</td>
  253.         <td data-drop="copy" data-controlable="merge"></td>
  254.         <td data-drop="copy" class=""></td>
  255.         <td data-drop="copy" class=""></td>
  256.         <td data-drop="copy" class=""></td>
  257.         <td data-drop="copy" class=""></td>
  258.       
  259.       </tr>
  260.       <tr>
  261.         <td class="controlable editable">17:15-17:30</td>
  262.         <td class="editable" colspan="5" data-controlable="split">眼保健操</td>
  263.       </tr>
  264.       <tr>
  265.         <td class="controlable editable">17:30-18:15</td>
  266.         <td data-drop="copy" data-controlable="merge"></td>
  267.         <td data-drop="copy"></td>
  268.         <td data-drop="copy"></td>
  269.         <td data-drop="copy"></td>
  270.         <td data-drop="copy"></td>

  271.       </tr>
  272.       <tr>
  273.         <td class="controlable editable">18:25-19:10</td>
  274.         <td data-drop="copy" data-controlable="merge"></td>
  275.         <td data-drop="copy"></td>
  276.         <td data-drop="copy"></td>
  277.         <td data-drop="copy"></td>
  278.         <td data-drop="copy"></td>

  279.       </tr>
  280.       
  281.     </tbody>
  282.   </table>

  283.                
  284.       <svg  id="svg"></svg>   
  285.     </div>
  286.    
  287.     </div>
  288.                 </div>
  289.           </div>
  290.     <script>
  291.    
  292.           document.addEventListener('DOMContentLoaded', function () {

  293.   //定义数组
  294. //  if (this.localStorage.getItem('contentHTML')) {
  295.    
  296. //alert('数据已从 localStorage 加载成功');
  297.   //}

  298. loadpoition() ;
  299.          
  300. var str = "今天是星期";
  301. var week = new Date().getDay();
  302. switch (week) {
  303.         case 0 :
  304.                 str += "日";
  305.                 break;
  306.         case 1 :
  307.                 str += "一";
  308.                                 drawhq(220);
  309.                        
  310.                 break;
  311.         case 2 :
  312.                 str += "二";
  313.                                 drawhq(306);
  314.                 break;
  315.         case 3 :
  316.                 str += "三";
  317.                                 drawhq(392);
  318.                 break;
  319.         case 4 :
  320.                 str += "四";
  321.                                 drawhq(478);
  322.                 break;
  323.         case 5 :
  324.                 str += "五";
  325.                                 drawhq(564);
  326.                 break;
  327.         case 6 :
  328.                 str += "六";
  329.                 break;
  330. }
  331. //alert(str);



  332. //draw();
  333.        // 获取所有可拖动的课程项
  334.         const draggables = document.querySelectorAll('.left > div');
  335.         // 获取所有可放置课程的时间段单元格(不包括第一列)
  336.         const droppables = document.querySelectorAll('.right td:not(:first-child)');

  337.         // 添加拖拽开始事件监听器
  338.         draggables.forEach(draggable => {
  339.             draggable.addEventListener('dragstart', e => {
  340.                 e.dataTransfer.setData('text/plain', e.target.className);
  341.                 e.dataTransfer.dropEffect = 'move';
  342.             });
  343.         });

  344.         // 添加拖拽进入和放置事件监听器
  345.         droppables.forEach(droppable => {
  346.             droppable.addEventListener('dragover', e => {
  347.                 e.preventDefault();
  348.                 e.dataTransfer.dropEffect = 'move';
  349.             });

  350.             droppable.addEventListener('drop', e => {
  351.                 e.preventDefault();
  352.                 const draggedItemClass = e.dataTransfer.getData('text/plain');
  353.                 const draggedItem = document.querySelector(`.${draggedItemClass}`);

  354.                 if (e.target.tagName === 'TD') {
  355.                     e.target.textContent = draggedItem.textContent;
  356.                     e.target.style.backgroundColor = window.getComputedStyle(draggedItem).backgroundColor;
  357.                 }
  358.                
  359.                 archive()         
  360.             });
  361.         });





  362.           });
  363.          
  364. // 读档
  365. function loadpoition() {
  366.   const contentHTML = localStorage.getItem('contentHTML');

  367.   let contentLoaded = false;

  368.   if (contentHTML) {
  369.     const contentElement = document.querySelector('.right');
  370.     if (contentElement) {
  371.       contentElement.outerHTML = contentHTML;
  372.       contentLoaded = true; // 标记content元素已加载
  373.     } else {
  374.       console.warn('页面上未找到类名为 "content" 的元素。');
  375.     }
  376.   }

  377.   // 检查两个元素是否都已成功加载
  378.   if (contentLoaded) {
  379.   //  alert('数据已从 localStorage 加载成功');
  380.   
  381.   }
  382. }
  383.             // 存档
  384. function archive() {
  385.   const contentElement = document.querySelector('.right');

  386.   if (contentElement) {
  387.     const contentHTML = contentElement.outerHTML;
  388.     localStorage.setItem('contentHTML', contentHTML);
  389.   }
  390. // alert('数据已保存到 localStorage');
  391. }

  392.      
  393.           // 重置
  394.         function init() {


  395.   // 清空 localStorage
  396.   localStorage.removeItem('contentHTML');



  397.     alert('项目重置成功,请关闭页面后重新打开');


  398. }
  399.    
  400.    
  401.   function draw()

  402. {
  403. var svgns="http://www.w3.org/2000/svg";// 1、创建svg容器
  404. let svg = document.getElementById("svg");
  405. svg.setAttribute('height', 999);
  406. svg.setAttribute('width', 628);
  407. svg.setAttribute('viewBox',"0 0 628 999");

  408. var icon=document.createElementNS(svgns,"rect");
  409.             icon.setAttribute("x",478);  //定位小方块
  410.             icon.setAttribute("y",5);
  411.             icon.setAttribute("width",86);
  412.             icon.setAttribute("height",903);
  413.             icon.setAttribute("stroke","red");  //子外边框颜色也相同
  414.             icon.setAttribute("stroke-width","5");
  415.                   icon.setAttribute("fill","none");
  416.                 svg.appendChild(icon);
  417.     }

  418.         
  419.        
  420.        
  421.         function drawhq(hqj){
  422. var svgns="http://www.w3.org/2000/svg";// 1、创建svg容器
  423. let svg = document.getElementById("svg");
  424. svg.setAttribute('height', 999);
  425. svg.setAttribute('width', 628);
  426. svg.setAttribute('viewBox',"0 0 628 999");

  427. var icon=document.createElementNS(svgns,"rect");
  428.             icon.setAttribute("x",hqj);  //定位小方块478
  429.             icon.setAttribute("y",5);
  430.             icon.setAttribute("width",86);
  431.             icon.setAttribute("height",903);
  432.             icon.setAttribute("stroke","red");  //子外边框颜色也相同
  433.             icon.setAttribute("stroke-width","5");
  434.                   icon.setAttribute("fill","none");
  435.                 svg.appendChild(icon);
  436.                        
  437.                         return svg;
  438.     }
  439.        
  440. //        function pieChart(width,height){
  441. //        //这个表示svg元素的xml命名空间
  442. //        var svgns="http://www.w3.org/2000/svg";
  443. //
  444. //        //创建一个<svg>元素,同时指定像素大小和用户坐标
  445. //        var chart=document.createElementNS(svgns,"svg:svg");
  446. //        chart.setAttribute("width",width);
  447. //        chart.setAttribute("height",height);
  448. //        chart.setAttribute("viewBox","0 0 "+width+" "+height);
  449. //            //绘制小方块表示图例
  450. //            var icon=document.createElementNS(svgns,"rect");
  451. //            icon.setAttribute("x",100);  //定位小方块
  452. //            icon.setAttribute("y",0);
  453. //            icon.setAttribute("width",100);
  454. //            icon.setAttribute("height",200);
  455. //            icon.setAttribute("stroke","black");  //子外边框颜色也相同
  456. //            icon.setAttribute("stroke-width","2");
  457. //                      icon.setAttribute("fill","none");
  458. //            chart.appendChild(icon);
  459. //                       
  460. //        return chart;
  461. //    }
  462.        

  463.     </script>
  464. </body>
  465. </html>
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-8-19 03:59

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表