html页面联动菜单常用处理方式

html页面联动菜单比较常见,一般情况下,点击一个radio或者change一个select,根据业务逻辑的需要,页面动态显示一些不同的选择项。

 

下面是最近项目中一个常用的场景,处理方式比较简单,但很实用。程序处理逻辑:选择不同的radio,通过java程序到DB中进行查询,得到不同的结果,替换原来的选择项,显示到页面上。

 

<script type="text/javascript">
function levelClick(levelvalue){
	var checkedInfoStr = "";
	var id = "Level Type";
	var forcastNode = document.getElementById(id);
	var inputnode = forcastNode.getElementsByTagName("input");

	if(levelvalue=="pl"){
		document.getElementById("leveltypeId_pl").checked=true;
	}else if(levelvalue=="qt"){
		document.getElementById("leveltypeId_qt").checked=true;
	}
		
	for (var i = 0; i < inputnode.length; i++) {
		if ( inputnode[i].checked == true ){
			checkedInfoStr = inputnode[i].value;
			break;
		}
	}
		
	ltypeValue1 = checkedInfoStr;
	var centerid ="Original Center";
	var centerNode = document.getElementById(centerid);
	var inputnode = centerNode.getElementsByTagName("input");
	for (var i = 0; i < inputnode.length; i++) {
		if ( inputnode[i].checked == true ){
			checkedInfoStr += "#";
			checkedInfoStr += inputnode[i].value;
			break;
		}
	} 
	//这里发出去的信息的格式是ltype#centername的形式
		
     	creatXMLHttpRequest();
      	//alert(checkedInfoStr);
     	var url="tiggeCon_LtypeAndCenter2.dhcc";
     	xmlHttp.open("POST",url,true);
     	//xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
     	xmlHttp.onreadystatechange=handleStateChangeLevel;
     	//alert(checkedInfoStr);
      	xmlHttp.send(checkedInfoStr);
}
     
    function handleStateChangeLevel(){
     	if(xmlHttp.readyState==4){
     		levelChange();  		
     	}
     }
     
     function levelChange(){// 从服务器提取数据
	var msg = xmlHttp.responseText;                     //得到返回的信息
	//alert(msg);
	var id = "pressid";
	var pressNode = document.getElementById(id);
	pressNode.innerHTML = "";
	pressNode.innerHTML=msg;
	if(ltypeValue1 == "sl"){
		document.getElementById("pressureid").checked=true;
		document.all["Pressure Level"].style.display='none';
	}
	else{
		document.all["Pressure Level"].style.display='';
	}
     }
</script>

<tr>	
	<td align="left" nowrap="nowrap">
		<input id="leveltypeId_qt" name="leveltypeId" value="var1" οnclick="levelClick('qt')" type="radio">single level products
	</td>
	<td align="left" nowrap="nowrap">
		<input id="leveltypeId_pl" name="leveltypeId" value="var2" οnclick="levelClick('pl')" checked="checked" type="radio">pressure level products
	</td>
	
</tr>

 

服务端处理:

//根据DB查询结果构造页面div
private String test(String ltype,String cccc){
	StringBuffer sb=new StringBuffer();
		
	sb.append("<div id=\"Pressure Level\" style=\"width:605px;text-align:center;\" height=\"auto\">");
	sb.append("<fieldset style=\"font-size: 14px;\"><legend>Pressure Level</legend>");
	sb.append("<table class=\"u_fie_table\"><tbody>");
		
	String[][] pressurelevel = getPlevelByLtypeAndCCCC(ltype,cccc);//数据库查询
	if(pressurelevel!=null){
		int ys = pressurelevel.length % 6;
		int rowcount = 0;
		int colcount = 6;
		      
		if(ys == 0){
			rowcount = (pressurelevel.length)/colcount;
		}else{
			rowcount = ((pressurelevel.length)/colcount)+1;	
		}
			  
		for(int i = 0; i < rowcount; i++){
	 		sb.append("<tr>");
	 	 	if(i == rowcount-1 && ys != 0){
	 			colcount = ys;
		      	}
		         
		     	for(int j = 0; j < colcount; j++){
		    		int z = i * 6 + j;
		    	  
		    	  	sb.append("<td align=\"left\" nowrap=\"nowrap\">");
		    	  	sb.append("<input id=\"pressureid\" name=\"pressureid\" value=");
		    	  	sb.append(pressurelevel[z][0]);
		    	  	sb.append(" type=\"checkbox\">");
		    	  	sb.append(Integer.parseInt(pressurelevel[z][0])+"hPa");
		    	  	sb.append("</td>");
 	 	        	}
		      
		      	sb.append("</tr>");
	 	 	}
		}
		
		
		sb.append("<tr><td width=\"100%\" colspan=\"6\" align=\"center\">");		
		sb.append("<style type=\"text/css\">");
		sb.append(".u_fie_tabent{ width:100%;text-align:center;border-top:dotted 1px #d9e4ee;padding-top:5px;margin-top:10px;}");
		sb.append(".u_fie_tabent a{text-decoration: none;text-decoration:none;display:inline-table;padding:2px 5px;margin:2px 5px;border:solid 1px #d9e4ee;height:20px;line-height:18px;color:#666;background:#eef6fc;}");
		sb.append(".u_fie_tabent a:hover{background:#0066FF;color:#fff;}");
		sb.append("</style>");
		sb.append("<div class=\"u_fie_tabent\" >");
		sb.append("<a href=\"javascript:checkAll(document.forms[0].pressureid);\">Select All</a>");
		sb.append("<a href=\"javascript:uncheckAll(document.forms[0].pressureid);\">Clear All</a>");
		sb.append("</div>");
		sb.append("</td></tr>");
		sb.append("</tbody></table>");
		sb.append("</fieldset></div>");

		
		....
		
		return sb.toString();
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTML 年月联动选择下拉菜单可以通过 JavaScript 实现。具体实现步骤如下: 1. 在 HTML 中定义年份和月份的下拉菜单。 ```html <select id="year"> <option value="">请选择年份</option> <option value="2021">2021年</option> <option value="2022">2022年</option> <!-- 其他年份选项 --> </select> <select id="month"> <option value="">请选择月份</option> <option value="1">1月</option> <option value="2">2月</option> <!-- 其他月份选项 --> </select> ``` 2. 在 JavaScript 中定义一个函数,用于根据选择的年份和月份生成日期选项列表。 ```javascript function generateDays() { var year = document.getElementById("year").value; var month = document.getElementById("month").value; var days = new Date(year, month, 0).getDate(); // 获取指定年份月份的天数 var daySelect = document.getElementById("day"); daySelect.innerHTML = "<option value=''>请选择日期</option>"; for (var i = 1; i <= days; i++) { var option = document.createElement("option"); option.value = i; option.text = i + "日"; daySelect.appendChild(option); } } ``` 3. 在 HTML 中为年份和月份的下拉菜单绑定 onchange 事件,当选择项发生变化时调用生成日期选项列表的函数。 ```html <select id="year" onchange="generateDays()"> <!-- 选项列表 --> </select> <select id="month" onchange="generateDays()"> <!-- 选项列表 --> </select> <select id="day"> <option value="">请选择日期</option> <!-- 日期选项列表由 JavaScript 生成 --> </select> ``` 这样就可以实现 HTML 年月联动选择下拉菜单了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值