js学习笔记

js学习笔记

学习js总结:

第一步引入头:

  

<%@ page contentType="text/html;charset=UTF-8"%>
<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
<html>
<head>
<title>Scope Management</title>
<meta name="decorator" content="default" />
</head>
<body>
</body>
</html>

  

第二步引入js+样式:

<%@include file="/WEB-INF/views/include/delivery.jsp"%>
<style>
input {
	 100px;;
}
#management_object td[name^='M-'] {
	background: #e8ffdc;
}
#management_object tr[name='data_row']:nth-child(odd) td[name='row_checkbox'],
	tr[name='data_row']:nth-child(odd) td[name='rolaName'], tr[name='data_row']:nth-child(odd) td[name='rolaName'] select,
	tr[name='data_row']:nth-child(odd) td[name='location'], tr[name='data_row']:nth-child(odd) td[name='location'] select,
	tr[name='data_row']:nth-child(odd) td[name='level'], tr[name='data_row']:nth-child(odd) td[name='level'] select
	{
	background: #EEEEEE;
}
#sla td[name^='M-'] {
	background: #e8ffdc;
}
#sla tr[name='data_row']:nth-child(odd) td[name='row_checkbox'], tr[name='data_row']:nth-child(odd) td[name='rolaName'],
	tr[name='data_row']:nth-child(odd) td[name='rolaName'] select, tr[name='data_row']:nth-child(odd) td[name='location'],
	tr[name='data_row']:nth-child(odd) td[name='location'] select, tr[name='data_row']:nth-child(odd) td[name='level'],
	tr[name='data_row']:nth-child(odd) td[name='level'] select {
	background: #EEEEEE;
}
#kpi td[name^='M-'] {
	background: #e8ffdc;
}
#kpi tr[name='data_row']:nth-child(odd) td[name='row_checkbox'], tr[name='data_row']:nth-child(odd) td[name='rolaName'],
	tr[name='data_row']:nth-child(odd) td[name='rolaName'] select, tr[name='data_row']:nth-child(odd) td[name='location'],
	tr[name='data_row']:nth-child(odd) td[name='location'] select, tr[name='data_row']:nth-child(odd) td[name='level'],
	tr[name='data_row']:nth-child(odd) td[name='level'] select {
	background: #EEEEEE;
}
.navTop {
	position: fixed;
	top: 0;
	bottom: 0;
	 100%;
	height: 40px;
	z-index: 1010;
	background-color: #fff
}
.icon-remove {
	color: #000;
	text-decoration-color: #000;
}
.error {
	background-color: #FF0000;
}
.bg_blue {
	background: #ddf2ff;
}
.bg_green {
	background: #e8ffdc;
}
.bg_red {
	background: #ffdddd;
}
</style>

  

第三步编写js代码

<script type="text/javascript">

  

1.取出后台传回来的数据(data是一个map集合list存入了map的方式存储的两个表的数据)

   $(document).ready(function(){         //加载完毕且页面完全加载(包括图像)时发生 ready 事件
     var data = ${empty data ? "''" : data};//如果有值就取值没有值就给个空字符串
 	var opptyPointInfoList = data["opptyPointInfoList"];//取出data中的opptyPointInfoList集合存入opptyPointInfoList
 	var opptyPointTraceList=data["opptyPointTraceList"];//取出data中的opptyPointTraceList集合存入opptyPointTraceList

  

2.创建行和列

  var row2 = '<tr name="data_row">';  //创建一个字符串      “ row +=   ”:将下面的字符串拼接   也就形成一个一行中的个列组合成的表格、

     //在页面中设置一个X形状的字符  并且将数据的Id存入row_checkbox中便于后期获取
     row2 += '<td name="row_checkbox" height="26px" style="text-align:center"><a class="icon-remove" title="Delete" style="cursor:pointer;"></a></a><input name="id" type="hidden" value="" /></td>';
 	row2 += '<td name="rolaName"></td>';     
 	row2 += '<td name="M-1"><input type="text" value=""   style="98%"/></td>';//为输入框类型 输入框占用表格中的98%的空间
 	row2 += '<td name="M-2"><input type="text" value=""   style="98%"/></td>';
 	row2 += '<td name="M-3"><input type="text" readonly="readonly" class="Wdate" style="100px;" value=""  onclick="WdatePicker({dateFmt:\'yyyy-MM-dd\'});" /></td>';
 	row2 += '<td name="M-4"><input type="text" value=""  style="98%"/></td>';
 	row2 += '<td name="M-5"><input type="text" value=""  style="98%"/></td>';
 	row2 += '<td name="M-6"><input type="text" value=""  style="98%"/></td>';
 	row2 += '<td name="M-7"><input type="text" value=""  style="98%"/></td>';
 	row2 += '<td name="M-8"><input type="text" value=""  style="98%"/></td>';
     row2 += '</tr>';	

  

3.编写增加行的方法

 function addRow2(rowno,projectCode,codeSelect){  //添加行时执行的方法
 		var objRow = $(row2);
 		objRow.find("td[name='rowno']").text(rowno);
 		objRow.find("td[name='rolaName']").text(projectCode);
// 			objRow.find("td[name='M-1']").append(codeSelect);       设置元素进去  (为选择框时使用)
 		
 		$("#sla").append(objRow);
 	}
 	

  

3.编写选择框选择元素的方法

 function getSelect(name,items,key,value,changeFunctionName){   //选择框取出选择元素的函数  这个函数是挺牛的 
  		var select = $("<select></select>");
  		if(name){
  			select.attr("name",name);
  		}
  		if(changeFunctionName){
  			select.attr("onchange",changeFunctionName+"()");
  		}
  		var emptyOption = $("<option></option>").val("").text("---select---");
  		select.append(emptyOption);
  		for(itemKey in items){
  			var option = $("<option></option>").val(items[itemKey][value]).text(items[itemKey][key]);
  			select.append(option);
  		}
  		return select;
  	}

  

4.定义并赋值变量

   var projectCode = "${projectInfo.aProjectCode} - ${projectInfo.aCodeName}"; //js中可以将字符串拼接起来
   	var codeSelect = getSelect("",opptyPointInfoList,"opptyPointCode","id")    //调用getSelect函数注意传入的值

  

5.遍历取出来的list并将原始精准的存进去

 if(opptyPointTraceList){  //判断语句   如果为非空 返回ture      为啥不用"=="号做判断呢?
   addOpptyPointTraceListRows();
}else{
   addRow2(1,projectCode,codeSelect);
}	
   function addOpptyPointTraceListRows(){  //从后台数据取出值放在表中的发达
   	if(opptyPointTraceList.length > 0){
       	for(var i=0;i<opptyPointTraceList.length;i++){
       		var rowobj = $(row2);      //注意着里面的元素为“row2” 不要将元素写错这一点很重要
// 		    	$(rowobj).attr("id","row_"+ i);
   	    	$(rowobj).find("td[name='row_checkbox']").find("input[name='id']").val(opptyPointTraceList[i]["id"]);
   			$(rowobj).find("td[name='rolaName']").text(projectCode);
// 				var mSelect = getSelect("",opptyPointInfoList,"opptyPointCode","id");    当表单中有选择类型的元素 (选择类型的元素是从另外一张表中得来的)
// 				mSelect.val(opptyPointTraceList[i]["opptyPiontInfoId"]);                 取到另外一个表中的id值存进去
// 				$(rowobj).find("td[name='M-1']").append(mSelect);                        展示的是opptyPointCode的val值    这一块值得研究
   			$(rowobj).find("td[name='M-1']").find("input").val(opptyPointTraceList[i]["opptyPointCode"]);
   	    	$(rowobj).find("td[name='M-2']").find("input").val(opptyPointTraceList[i]["actionDescription"]);
   			$(rowobj).find("td[name='M-3']").find("input").val(opptyPointTraceList[i]["changeTime"]);
   			$(rowobj).find("td[name='M-4']").find("input").val(opptyPointTraceList[i]["changeTrackPerson"]);
   			$(rowobj).find("td[name='M-5']").find("input").val(opptyPointTraceList[i]["nextPlan"]);
   			$(rowobj).find("td[name='M-6']").find("input").val(opptyPointTraceList[i]["help"]);
   			$(rowobj).find("td[name='M-7']").find("input").val(opptyPointTraceList[i]["helpObject"]);
   			$(rowobj).find("td[name='id']").find("input").val(opptyPointTraceList[i]["id"]).hide();
   			$("#sla").append($(rowobj));
       	}
       }else{
       	
   	    addRow2(1,projectCode,codeSelect);
       }
   }

  

6.添加点击触发时间

 $("body").on("click","#sla_add",function(){
   		//行号从第2行开始,newRowNo=lastRow;
   		var lastRow = $("#management_object tr").length;

   		var codeSelect = getSelect("",opptyPointInfoList,"opptyPointCode","id")   //新增元素的时候可以将选择框新增过去不然新增的时候没有选择框
   		addRow2(lastRow,projectCode,codeSelect);
// 			if(lastRow==additionalResourceList.length){
   			//$("#transition_resource_add").hide();
// 			}
   	});
   </script>

  

第四步编写HTML

1.添加头部链接

<div class="navTop">
		<ul class="nav nav-tabs">    
			<li><a
				href="${ctx}/delivery/platform/contractInfo?id=${projectInfo.id}">合同信息</a></li>
			<li><a
				href="${ctx}/delivery/platform/businessInfo?id=${projectInfo.id}">经营信息</a></li>
			<li><a
				href="${ctx}/delivery/platform/qualityInfo?id=${projectInfo.id}">质量信息</a></li>
			<li><a
				href="${ctx}/delivery/platform/hrInfo?id=${projectInfo.id}">人力资源信息</a></li>
			<li class="active"><a
				href="${ctx}/delivery/platform/opportunityPointInfo?id=${projectInfo.id}">机会点信息</a></li>
			<li><a
				href="${ctx}/delivery/platform/caseStudiesInfo?id=${projectInfo.id}">案例分享</a></li>
		</ul>
	</div>

  

2.添加表格

<form:form id="inputForm" modelAttribute="projectInfo" action="${ctx}/ito/output/platform/transitionFte" method="post" class="form-horizontal" cssStyle="margin:0;">
			<form:hidden path="id" />
			<div class="con" style="">

				<div class="tab_con">  
                            
					<div class="page_step2">
						<div class="page_con">    
							<h1>AOS机会点端到端跟踪记录</h1>
							<table id="sla" width="100%" cellpadding="0" cellspacing="0">      <!-- id:这个很重要   会用这个id找打具体哪个表中的元素将此表中的数据取出  -->
								<tr class="tb_tt">
									<td style=" 80px;">S.NO</td>
									<td>项目编码</td>
									<td>机会点编码<font color="red">*</font></td>
									<td>行动描述<font color="red">*</font></td>         <!--      <font color="red">*</font> 必选框给一个红色星号给予提醒-->
									<td>变更时间<font color="red">*</font></td>
									<td>变更跟踪责任人<font color="red">*</td>
									<td>下一步计划<font color="red">*</td>
									<td>求助</td>
									<td>求助对象</td>
									<td>附件</td>
								</tr>
							</table>
							<div></div>
						</div>
					</div>
					<a href="#javascript:;" id="sla_add" style="display: inline-block;"
						class="btn_add"></a>
					<div style="height: 20px;"></div>


				</div>
				<div style="text-align: center;   text-align: center;  99%; ">
					<input id="btnSave" onclick="" style="display: inline;" class="btn btn-primary btn_next" type="button" value="Save" />
				</div>
			</div>
		</form:form>

  

3.jsp

<script type="text/javascript">
 		$("#btnSave").click(function(){
 			save(0,2);
 		});

 		function save(type,resultType){   //存储方法 将表格中的数据放入对应属性的实体类中 并封装成list集合提交给后端
 			var projectId = "${projectInfo.id}";
 			var oo;
 			var oox;
 			var isnext = false;
 		

 			var kpiData =[];      //创建数组  使用的是数组直接量(Array Literal)创建数组等同于  var kpiData = new Array(); (使用array函数创建)
 			$("#sla").find("tr[name='data_row']").each(function(index,elment){ //语法:$(selector).each(function(index,element))
 				var obj = {};  //创建对象
 				obj.id = $(elment).find("td[name='row_checkbox']").find("input").val();
 				obj.projectBasicId = projectId;
// 					obj.opptyPiontInfoId = $(elment).find("td[name='M-1']").find("select").val();
// 					obj.opptyPointCode = $(elment).find("td[name='M-1']").find("select :selected").text();
 				obj.opptyPointCode = $(elment).find("td[name='M-1']").find("input").val();
 				obj.actionDescription = $(elment).find("td[name='M-2']").find("input").val();
 				obj.changeTime = $(elment).find("td[name='M-3']").find("input").val();
 				obj.changeTrackPerson = $(elment).find("td[name='M-4']").find("input").val();
 				obj.nextPlan = $(elment).find("td[name='M-5']").find("input").val();
 				obj.help = $(elment).find("td[name='M-6']").find("input").val();
 				obj.helpObject = $(elment).find("td[name='M-7']").find("input").val();
 				kpiData.push(obj);  //将对象加入到数组中  (方法有别)与Java    Java中的数组是set Map是put 不要混淆
 				
 				if($(elment).find("td[name='M-1']").find("input").val() == '') {//判断提示语句
 					oo = $(elment).find("td[name='M-1']").find("input");
 					oox = "请输入机会点编码!";
 					isnext = true;
 					return false;
 				}
 				
 				if($(elment).find("td[name='M-2']").find("input").val() == '') {
 					oo = $(elment).find("td[name='M-2']").find("input");
 					oox = "请输入行动描述描述!";
 					isnext = true;
 					return false;
 				}
 				
 				
 				if($(elment).find("td[name='M-3']").find("input").val() == '') {
 					oo = $(elment).find("td[name='M-3']").find("input");
 					oox = "请输入变更时间!";
 					isnext = true;
 					return false;
 				}
 				if($(elment).find("td[name='M-4']").find("input").val() == '') {
 					oo = $(elment).find("td[name='M-4']").find("input");
 					oox = "请输入变更跟踪责任人!";
 					isnext = true;
 					return false;
 				}
 				if($(elment).find("td[name='M-5']").find("input").val() == '') {
 					oo = $(elment).find("td[name='M-5']").find("input");
 					oox = "请输入下一步计划!";
 					isnext = true;
 					return false;
 				}
 				
 			});
 			kpiData = JSON.stringify(kpiData);   //JSON.stringify() 方法用于将 JavaScript 值转换为 JSON 字符串
// 				window.alert(kpiData);
 			if(isnext && kpiData != "[]") {   //判断集合是否有存在必填的元素未填现象
 					alert(oox);
 					oo.focus();
 					return false;
 				}
 				
 				//将两个json字符串传递给后端
 			$.post("${ctx}/delivery/platform/saveOpptyPointInfoList",{projectId:"${projectInfo.id}",dataJson:manageData,traceData:kpiData,},function(result){
 				if(result=="success"){
 					if(resultType == '2'){
 						alert("Save data success!");					
 					}
 				}
 			});
 			}else{
 				if(resultType == '2'){
 					alert("Please select a project!");
 				}
 			}		
 			
 		}	
 		
 	</script>

  

原文地址:https://www.cnblogs.com/jiajialeps/p/10163106.html