由於本人也是邊學邊寫,因此整理的比較亂,下面放出我例子的完整代碼,方便大家交流測試,如有問題歡迎評論
首先,表格採用的是BootStrap樣式編輯的,主要使用的是angularjs,為了方便也有jQuery的方法,在測試時需自行引入bootstrap,angularjs和jq的檔案。
整體程式碼預覽:
HTML:
<!DOCTYPE html> <html lang="en" ng-app="myModule"> <head> //需要自行引入BOOTStrap,angularjs和jQuery的js,css文件 <style> .pagination .num{ font-size:22px;color:red; } .text{ margin:0 auto; border:1px solid #ccc; width:100%; max-width:200px; } </style> <title>欢迎</title> </head> <body ng-controller="myCtrl"> <div class="block"> <div class="navbar navbar-inner block-header"> <div class="muted pull-left">{{kaohzbTitle}}</div> </div> <div class="span12" style="float:left;"> <div class="table-toolbar"> <button style="margin-left: 5px;" id="refresh" ng-click="refresh()" class="btn btn-success"> <i class=" icon-refresh icon-white"></i> 刷新 </button> <button ng-disabled="isdisabled" class="btn" ng-class="{'btn-info':isInfo}" id="savekaohzb" ng-click="save()"> <i class="icon-edit icon-white"></i> 保存 </button> </div> </div> <div class="row-fluid"> <div class="span6"></div> <table class="table table-striped table-bordered table-hover" id="example" style="margin-top:10px;"> <thead> <tr> <th style="width: 20px;" rowspan="2">全选 <br><input type="checkbox" ng-model="selectAll"></th> <th style="text-align: center; width: 50px;vertical-align: middle" rowspan="2">序号</th> <th style="text-align: center; width: 150px;vertical-align: middle" rowspan="2">名称</th> <th style="text-align: center; width: 150px;vertical-align: middle" rowspan="2">日期</th> <th style="text-align: center; width: 150px;" colspan="3">比赛队伍(红)</th> <th style="text-align: center; width: 150px;" colspan="3">比赛队伍(蓝)</th> <th style="text-align: center; width: 150px;vertical-align: middle" rowspan="2">比分</th> <th style="text-align: center; width: 150px;vertical-align: middle" rowspan="2">说明</th> <th style="text-align: center; width: 150px;vertical-align: middle" rowspan="2">玩家支持队伍</th> </tr> <tr> <th style="text-align: center; width: 80px;">第一场</th> <th style="text-align: center; width: 80px;">第二场</th> <th style="text-align: center; width: 80px;">说明</th> <th style="text-align: center; width: 80px;">第一场</th> <th style="text-align: center; width: 80px;">第二场</th> <th style="text-align: center; width: 80px;">说明</th> </tr> </thead> <tbody ng-click="fun()" id="page" ng-show="isshow"> <!--track by tb.id--> <tr ng-repeat="tb in saveDate"><!-- 只用angularjs实现点击一行就选中暂时无法实现 --> <td style="width: 20px;"><input type="checkbox" ng-checked="selectAll"></td> <td style="text-align:center;">{{tb.id}}</td> <td style="text-align:center;">{{tb.zbname}}</td> <td style="text-align:center;">{{tb.zbtime}}</td> <td style="text-align:center;">{{tb.zbrul1}}</td> <td style="text-align:center;">{{tb.zbrul2}}</td> <td style="text-align:center;"><div class="text" contenteditable="true" ng-model="tb.por"></div></td> <td style="text-align:center;">{{tb.zbrul2}}</td> <td style="text-align:center;">{{tb.zbrul1}}</td> <td style="text-align:center;"><div class="text" contenteditable="true" ng-model="tb.por"></div></td><!-- 2016.1.19通过可编译的div来代替输入框 --> <td style="text-align:center;">{{tb.score}}</td> <td style="text-align:center;"><div class="text" contenteditable="true" ng-model="tb.por"></div></td> <td> <select name="" id="" ng-change="changetype(adds)" ng-model="adds" style="text-align:center;width:100%;min-width:80px;margin-bottom:0"> <option value="" ng-show="isShow">{{tb.type}}</option> <option value="支持红方">支持红方</option> <option value="支持蓝方">支持蓝方</option> <option value="双方相同">双方相同</option> </select> </td> </tr> </tbody> </table> </div> <div class="pagination"> <ul style="float:right"> <li id="previous"><a href="">上一页</a></li> <li><!--用于页标的显示 --> <ul id="page_num_all"> </ul> </li> <li id="next"><a href="" style="border:1px solid #ddd;float:right">下一页</a></li> </ul> <span> 当前为第<span class="num" id="current_page"></span>页,总共<span class="num" id="page_all"></span>页 </span> <span>您当前对select的操作值为:</span>{{typename}} </div> <!-- END FORM--> </div> </body>
js程式碼:
<script> angular.module("myModule",[]).controller('myCtrl', function($scope) { $scope.kaohzbTitle = "考核指标维护"; $scope.search = new Object(); $scope.isdisabled=false; $scope.isInfo=false; $scope.saveDate="";//用于保存得到的原始数据 // $http.post请求表格数据 // 模仿请求得到的数据 var datalist=[{ id:1,zbname:"中亚赛区比赛",zbtime:"2015-12-03",zbrul1:"胜利",zbrul2:"失败",por:"请输入说明内容",score:"2:1",type:"支持红方"},{ id:2,zbname:"日韩赛区比赛",zbtime:"2015-11-11",zbrul1:"胜利",zbrul2:"胜利",por:"请输入说明内容",score:"2:1",type:"支持蓝方"},{ id:3,zbname:"欧美赛区比赛",zbtime:"2015-3-03",zbrul1:"失败",zbrul2:"胜利",por:"请输入说明内容",score:"2:1",type:"双方相同"},{ id:4,zbname:"中东赛区比赛",zbtime:"2016-1-05",zbrul1:"胜利",zbrul2:"失败",por:"请输入说明内容",score:"2:1",type:"支持蓝方"},{ id:5,zbname:"北京赛区比赛",zbtime:"2014-12-23",zbrul1:"失败",zbrul2:"胜利",por:"请输入说明内容",score:"2:1",type:"双方相同"},{ id:6,zbname:"韩国赛区比赛",zbtime:"2015-11-01",zbrul1:"失败",zbrul2:"胜利",por:"请输入说明内容",score:"2:1",type:"双方相同"},{ id:7,zbname:"日本赛区比赛",zbtime:"2011-1-23",zbrul1:"胜利",zbrul2:"失败",por:"请输入说明内容",score:"2:1",type:"支持红方"},{ id:8,zbname:"中亚赛区比赛",zbtime:"2013-12-15",zbrul1:"失败",zbrul2:"胜利",por:"请输入说明内容",score:"2:1",type:"支持蓝方"},{ id:9,zbname:"中亚赛区比赛",zbtime:"2015-10-17",zbrul1:"失败",zbrul2:"胜利",por:"请输入说明内容",score:"2:1",type:"支持红方"},{ id:10,zbname:"中亚赛区比赛",zbtime:"2015-11-21",zbrul1:"胜利",zbrul2:"胜利",por:"请输入说明内容",score:"2:1",type:"支持蓝方"},{ id:11,zbname:"中亚赛区比赛",zbtime:"2015-2-02",zbrul1:"失败",zbrul2:"失败",por:"请输入说明内容",score:"2:1",type:"支持红方"},{ id:12,zbname:"中亚赛区比赛",zbtime:"2015-2-05",zbrul1:"胜利",zbrul2:"失败",por:"请输入说明内容",score:"2:1",type:"双方相同"}]; $scope.fun=function(){ var e=window.event||arguments[0]; var src=e.srcElement||e.target; if(src.nodeName=="TD"){ var par=src.parentNode; var sd=par.getElementsByTagName("td")[0]; if(sd.firstChild.checked==true){ sd.firstChild.checked=false; }else{ $("tr td").attr("checked",false); sd.firstChild.checked=true; } } } $scope.refresh=function(){//点击刷新按钮显示表格 $scope.saveDate=datalist; // console.log("结束赋予数据"); $scope.$watch("saveDate",function(){//2016.1.20监听列表生成数据,当发生变化时执行刷新列表 table_page(); $scope.isshow=true; }); } $scope.save=function(){//页面提交按钮 console.log("准备保存"); console.log($scope.saveDate);//只要数据改变,自动保存到原始数据列表中 } //表格分页功能 function table_page(){ var show_page=5;//每页显示的条数 var page_all=$("#page").children().size();//总条数 var current_page=1;//当前页 // console.log(page_all); var page_num=Math.ceil(page_all/show_page);//总页数 var current_num=0;//用于生成页标的计数器 var li="";//页标元素 while(page_num>current_num){//循环生成页标元素 li+='<li class="page_num"><a href="javasctip:(0)">'+(current_num+1)+'</a></li>'; current_num++; } $("#page_num_all").html(li);//添加页标到页面 $('#page tr').css('display', 'none');//设置隐藏 $('#page tr').slice(0, show_page).css('display', '');//设置显示 $("#current_page").html(" "+current_page+" ");//显示当前页 $("#page_all").html(" "+page_num+" ");//显示总页数 $("#previous").click(function(){//上一页 var new_page=parseInt($("#current_page").text())-1; if(new_page>0){ $("#current_page").html(" "+new_page+" "); tab_page(new_page); } }); $("#next").click(function(){//下一页 var new_page=parseInt($("#current_page").text())+1;//当前页标 if(new_page<=page_num){//判断是否为最后或第一页 $("#current_page").html(" "+new_page+" "); tab_page(new_page); } }); $(".page_num").click(function(){//页标跳转 var new_page=parseInt($(this).text()); tab_page(new_page); }); function tab_page(index){//切换对应页标的页面 var start=(index-1)*show_page;//开始截取的页标 var end=start+show_page;//截取个数 $('#page').children().css('display', 'none').slice(start, end).css('display', ''); current_page=index; $("#current_page").html(" "+current_page+" "); } } }).directive('contenteditable', function() {//自定义ngModel的属性可以用在div等其他元素中 return { restrict: 'A', // 作为属性使用 require: '?ngModel', // 此指令所代替的函数 link: function(scope, element, attrs, ngModel) { if (!ngModel) { return; } // do nothing if no ng-model // Specify how UI should be updated ngModel.$render = function() { element.html(ngModel.$viewValue || ''); }; // Listen for change events to enable binding element.on('blur keyup change', function() { scope.$apply(readViewText); }); // No need to initialize, AngularJS will initialize the text based on ng-model attribute // Write data to the model function readViewText() { var html = element.html(); // When we clear the content editable the browser leaves a <br> behind // If strip-br attribute is provided then we strip this out if (attrs.stripBr && html === '<br>') { html = ''; } ngModel.$setViewValue(html); } } }; }) </script>

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

記事本++7.3.1
好用且免費的程式碼編輯器