亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JS拖動選擇table里的單元格完整實例【基于jQuery】

2019-11-19 11:26:45
字體:
來源:轉載
供稿:網友

本文實例講述了JS拖動選擇table里的單元格。分享給大家供大家參考,具體如下:

用JS 實現類似Excel里面動態選擇單元格的例子,從網上得到的例子,先記錄在這里,以后參考用。

<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>www.49028c.com JS拖動選擇table里的單元格</title>  <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>  <style>  .table-container {      width: 100%;      overflow-y: auto;      _overflow: auto;      margin: 0 0 1em;      background-color:white;    }    table {      border: 0;      border-collapse: collapse;    }      table td, table th {        border: 1px solid #999;        padding: .5em 1em;      }    /*添加IOS下滾動條 */    .table-container::-webkit-scrollbar {      -webkit-appearance: none;      width: 14px;      height: 14px;    }    .table-container::-webkit-scrollbar-thumb {      border-radius: 8px;      border: 3px solid #fff;      background-color: rgba(0, 0, 0, .3);    }    /*對齊*/    .table-time div {      text-align: center;      min-width: 104px;    }    .table-time, tr th {      background-color: #DBE5F1;    }    .table-time {      cursor: default !important;    }    .div-right {      text-align: right;    }    .div-unSelect {      background-color: #D8D8D8;    }    .div-Select {      background-color: #92D050;    }    .div-ISelect {      background-color: #FBD4B4;    }    /*圖例*/    ul li {      list-style: none;      float: left;    }    .table-container td {      cursor: pointer;    }  </style>  <script>   $(function () {      initForm();      var monday = moment().startOf('isoWeek');      $("#txtMonday").val(monday.format("YYYY-MM-DD"));      renderWeek(monday);    })    function initForm() {      //初始化行      var duration = ["9:30~10:15", "10:30~11:15", "11:30~12:15", "13:30~14:15", "14:30~15:15", "15:30~16:15"];      $("tr td").parent().remove();      //TODO:從后臺獲得結果      for (var i = 0; i < duration.length; i++) {        var tempRow = " <tr>"                + " <td class='table-time'>"                + "  <div>" + (i + 1) + "</div>"                + "  <div>" + duration[i] + "</div>"                + "</td>"                + " <td class='select div-ISelect'>" + "<div count='1'>已約:1人</div><div class='div-right'>√</div>" + "</td>"                + " <td class='select'>" + "<div count='0'>已約:0人</div><div class='div-right'>?</div>" + "</td>"                + " <td class='select div-Select'>" + "<div count='1'>已約:1人</div><div class='div-right'>?</div>" + "</td>"               + " <td class='select'>" + "<div count='0'>已約:0人</div><div class='div-right'>?</div>" + "</td>"                + " <td class='select div-unSelect'>" + "<div count='0'>已約:0人</div><div class='div-right'>?</div>"                + "</td>"                + " <td class='select div-unSelect'>" + "<div count='0'>已約:0人</div><div class='div-right'>?</div>"                + "</td>"                + " <td class='select div-unSelect'>" + "<div count='0'>已約:0人</div><div class='div-right'>?</div>"                + "</td>"                + " </tr>";        $("table tbody").append(tempRow);      }      var isMouseDown = false,       isHighlighted,       tickets = [];      //添加點擊事件      $(".select").mousedown(function () {        isMouseDown = true;        var currentTD = $(this);        if (currentTD.hasClass("div-unSelect")) {          //alert("該時間段已關閉禁止選擇");          return;        }        if (currentTD.hasClass("table-time")) {          //alert("這是時間段禁止選擇");          return;        }        var countDiv = $(currentTD.children()[0]);        var correctDiv = $(currentTD.children()[1]);        var count = 0;        if (currentTD.hasClass("div-ISelect")) {          currentTD.removeClass("div-ISelect");          count = Number(countDiv.attr("count")) - 1;          correctDiv.html("?");        } else {          currentTD.addClass("div-ISelect");          count = Number(countDiv.attr("count")) + 1;          correctDiv.html("√");        }        countDiv.attr("count", count);        countDiv.html("已約:" + countDiv.attr("count") + "人");        isHighlighted = $(this).hasClass("div-ISelect");        selected();        return false; // prevent text selection      })      .mouseover(function (e) {        if (checkHover(e, this)) {          if (isMouseDown) {            var currentTD = $(this);            if (currentTD.hasClass("div-unSelect")) {              //alert("該時間段已關閉禁止選擇");              return;            }            if (currentTD.hasClass("table-time")) {              //alert("這是時間段禁止選擇");              return;            }            var countDiv = $(currentTD.children()[0]);            var correctDiv = $(currentTD.children()[1]);            var count = 0;            if (currentTD.hasClass("div-ISelect")) {              currentTD.removeClass("div-ISelect");              count = Number(countDiv.attr("count")) - 1;              correctDiv.html("?");            } else {              currentTD.addClass("div-ISelect");              count = Number(countDiv.attr("count")) + 1;              correctDiv.html("√");            }            countDiv.attr("count", count);            countDiv.html("已約:" + countDiv.attr("count") + "人");            selected();          }        }      });      $(document)      .mouseup(function () {        isMouseDown = false;        //alert('Deselected');      });    }    function selected() {      //tickets = $("div-ISelect").map(function () {      //  return $(this).text();      //});      //console.log(tickets.get().join());    }    //初始化日期    function renderWeek(monday) {      $("#txtMonday").val(monday.format("YYYY-MM-DD"));      ////獲得這一周的所有日期      var myArray = new Array()      myArray[0] = monday.format("MM-DD");      for (var i = 1; i < 7; i++) {        var temp = moment(myArray[i - 1]).add(1, "days").format("MM-DD");        myArray[i] = temp;      }      $("tr th:gt(0)").each(function (i) {        var weekString = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"];        $(this).html("<span>" + weekString[i] + " " + myArray[i] + "</span>");      });      $("caption").html(monday.format("YYYY-MM-DD") + "~" + monday.add(6, 'days').format("YYYY-MM-DD"));    }    //上一周    function lastWeek() {      initForm();      var currentDay = moment($("#txtMonday").val());      var lastMonday = currentDay.add(-1, 'weeks').startOf('isoWeek');//上周一      renderWeek(lastMonday);    }    //下一周    function nextWeek() {      initForm();      var currentDay = moment($("#txtMonday").val());      var nextMonday = currentDay.add(1, 'weeks').startOf('isoWeek');//上周一      renderWeek(nextMonday);    }    //全選    function selectAll() {      $("tr td").each(function () {        var currentTD = $(this);        if (currentTD.hasClass("div-ISelect") || currentTD.hasClass("div-unSelect") || currentTD.hasClass("table-time")) {          return;        }        var countDiv = $(currentTD.children()[0]);        var correctDiv = $(currentTD.children()[1]);        var count = 0;        currentTD.addClass("div-ISelect");        count = Number(countDiv.attr("count")) + 1;        correctDiv.html("√");        countDiv.attr("count", count);        countDiv.html("已約:" + countDiv.attr("count") + "人");      });    }    //判斷是否重復mouseover    function checkHover(e, target) {      if (getEvent(e).type == "mouseover") {        return !contains(target, getEvent(e).relatedTarget || getEvent(e).fromElement) && !((getEvent(e).relatedTarget || getEvent(e).fromElement) === target);      } else {        return !contains(target, getEvent(e).relatedTarget || getEvent(e).toElement) && !((getEvent(e).relatedTarget || getEvent(e).toElement) === target);      }    } function getEvent(e) {      return e || window.event;    }    function contains(parentNode, childNode) {      if (parentNode.contains) {        return parentNode != childNode && parentNode.contains(childNode);      } else {        return !!(parentNode.compareDocumentPosition(childNode) & 16);      }    }  </script></head><body>  <form id="form1" runat="server">    <br />    <div class="table-title"></div>    <input type="text" name="name" value=" " id="txtMonday" />    <input id="btnLastWeek" type="button" name="name" value="上一周 " onclick="lastWeek()" />    <input id="btnNextWeek" type="button" name="name" value="下一周 " onclick="nextWeek()" />    <input id="btnSelectAll" type="button" name="name" value="全選 " onclick="selectAll()" />    <div class="table-container">      <table>        <caption>我是表格標題</caption>        <tbody>          <tr>            <th></th>            <th class="table-week"><span>周一</span></th>            <th class="table-week"><span>周二</span></th>            <th class="table-week"><span>周三</span></th>            <th class="table-week"><span>周四</span></th>            <th class="table-week"><span>周五</span></th>            <th class="table-week"><span>周六</span></th>            <th class="table-week"><span>周日</span></th>          </tr>        </tbody>      </table>      <div>        <ul>          <li><span class="div-Select">□</span>表示已有教練預約  </li>          <li><span class="div-ISelect">□</span>表示當前已預約,同時以“√”表示  </li>          <li><span>□</span>表示可預約 </li>          <li><span class="div-unSelect">□</span>表示未開放</li>        </ul>      </div>    </div>  </form></body></html>

運行效果:

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具http://tools.VeVB.COm/code/HtmlJsRun測試上述代碼運行效果。

更多關于jQuery相關內容感興趣的讀者可查看本站專題:《jQuery表格(table)操作技巧匯總》、《jQuery操作xml技巧總結》、《jQuery form操作技巧匯總》、《jQuery常用插件及用法總結》、《jQuery擴展技巧總結》及《jquery選擇器用法總結

希望本文所述對大家jQuery程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
韩国精品美女www爽爽爽视频| 亚洲国产精品女人久久久| 欧美亚洲免费电影| 欧美日韩亚洲天堂| 亚洲一区中文字幕| 国产精品成人免费视频| 国产91色在线免费| 国产久一一精品| 亚洲视频在线观看| 亚洲精品自拍第一页| 国产成人亚洲综合青青| 在线亚洲欧美视频| 国产日产亚洲精品| 亚洲自拍在线观看| 亚洲精品美女久久| 中文字幕日韩免费视频| 欧美一级在线播放| 国产欧美精品在线| 亚洲国产欧美日韩精品| 日韩av一卡二卡| 热re99久久精品国产66热| 国产盗摄xxxx视频xxx69| 亚洲女同性videos| 欧美黑人一区二区三区| 国产69精品久久久久9| 欧美亚洲成人网| 91精品久久久久久久久久久久久久| 欧美片一区二区三区| 国产成人高清激情视频在线观看| 久久久视频在线| 欧美专区国产专区| 欧美放荡办公室videos4k| 日韩av理论片| 中文欧美日本在线资源| 亚洲精品suv精品一区二区| 欧美性猛交xxxx乱大交蜜桃| 久久人人爽人人爽人人片av高清| 国产精品入口免费视| 国产日韩在线看片| 欧美激情一区二区三级高清视频| 成人a在线观看| 亚洲国产91精品在线观看| 国产精品视频999| 久久久精品网站| 国产一区红桃视频| 国产福利视频一区二区| 伊人久久综合97精品| 国产午夜精品一区二区三区| 国产精品入口免费视频一| 97视频国产在线| 伊人伊成久久人综合网小说| 欧美体内谢she精2性欧美| 97视频人免费观看| 91精品免费看| 一本一本久久a久久精品综合小说| 91九色蝌蚪国产| 亚洲精品乱码久久久久久金桔影视| 欧美韩日一区二区| 久久久中精品2020中文| 国产精品国产自产拍高清av水多| 亚洲精品第一国产综合精品| 中文字幕亚洲欧美日韩在线不卡| 亚洲国产日韩欧美在线动漫| 91亚洲国产成人精品性色| 草民午夜欧美限制a级福利片| 国产亚洲欧美aaaa| 亚洲最大av网站| 精品亚洲夜色av98在线观看| 亚洲女人天堂成人av在线| 国产精品jvid在线观看蜜臀| 国产香蕉一区二区三区在线视频| 日本sm极度另类视频| 日韩女在线观看| 97在线视频免费| 中文字幕一区电影| 国产日韩欧美在线| 亚洲丝袜在线视频| 日韩欧美国产视频| 亚洲国产精品人人爽夜夜爽| 欧美视频在线观看免费| 欧美福利视频在线| 一本色道久久综合亚洲精品小说| 日韩av成人在线| 成人黄色免费在线观看| 最新日韩中文字幕| 色噜噜狠狠色综合网图区| 亚洲片av在线| 亚洲视频免费一区| 日韩中文字幕在线精品| 国产69精品久久久久9| 97视频com| 成人观看高清在线观看免费| 欧美亚洲另类激情另类| 久久网福利资源网站| 日本韩国在线不卡| 黄色成人av在线| 黑人极品videos精品欧美裸| 91产国在线观看动作片喷水| 欧美一区第一页| 亚洲人a成www在线影院| 国产视频久久久久| 欧美激情一区二区三区久久久| 在线日韩日本国产亚洲| 久久久久一本一区二区青青蜜月| 97超级碰碰人国产在线观看| xxx成人少妇69| 97超级碰碰碰| 欧美日本啪啪无遮挡网站| 91久久精品一区| 色综久久综合桃花网| 亚洲精品不卡在线| 欧美巨乳美女视频| 亚洲欧洲日产国码av系列天堂| 国产成人精品视频在线观看| 亚洲午夜久久久影院| 久久国产视频网站| 亚洲第一二三四五区| 91免费视频国产| 九九久久精品一区| 国产原创欧美精品| 国产日韩精品综合网站| 国产综合香蕉五月婷在线| 日韩国产中文字幕| 在线日韩中文字幕| 一区二区三欧美| 亚洲欧美日韩第一区| 欧美性猛交丰臀xxxxx网站| 欧美多人乱p欧美4p久久| 亚洲天堂精品在线| 亚洲一区二区三区香蕉| 日韩av成人在线观看| 一本大道亚洲视频| 国产精品电影网站| 国产精品入口免费视| 欧美精品videosex极品1| 日韩精品在线免费观看视频| 2019最新中文字幕| 不卡伊人av在线播放| 成人免费xxxxx在线观看| 国产自摸综合网| 亚洲最新视频在线| 超在线视频97| 久青草国产97香蕉在线视频| 精品亚洲男同gayvideo网站| 久久久精品国产一区二区| 国产精品久久久久久久久久三级| 欧美国产日韩xxxxx| 亚洲人成网站免费播放| 亚洲香蕉成人av网站在线观看| 丝袜情趣国产精品| 国产精品久久不能| 欧美在线视频网| 亚洲系列中文字幕| 国产欧美韩国高清| 亚洲一区二区三区毛片| 亚洲黄色av女优在线观看| 精品色蜜蜜精品视频在线观看| 亚洲欧美日韩中文在线| 国产精品黄色av| 国产视频自拍一区| 亚洲自拍高清视频网站| 97超级碰在线看视频免费在线看| 欧美中文字幕在线观看| 日本欧美国产在线|