实用的JavaScript(持续添加)

简介: 本文主要讲实用的JavaScript

Checkbox类:



1.实现checkbox的全选功能

<script type="text/javascript">
//全选checkbox:1、当全选checkbox勾选,子checkbox(name为'ids'的checkbox)自动全部勾选
//    2、当全选checkbox取消勾选,子checkbox自动全部取消勾选
function  checkAll(){
      if($("#checkall")[0].checked){
        $("input[type='checkbox'][name='ids']").attr("checked","checked");
      }else{
        $("input[type='checkbox'][name='ids']").attr("checked",null);
      }
}
//子checkbox:1、当所有子checkbox全部勾选时,全选checkbox自动勾选
//2、当有一个子checkbox没有勾选时,全选checkbox自动改为未勾选
function changeCheckCount(){
       var count=0;
     $("input[type='checkbox'][name='ids']").each(function(index,data){
            if(this.checked){
              count++;  
            }
     });
       if(count== $("input[type='checkbox'][name='ids']").length){
         $("#checkall").attr("checked","checked");
       }else{
         $("#checkall").attr("checked",null);
       }
}
</script>
<td><!-- 全选checkbox -->
  <s:checkbox name="checkall" id="checkall" value="" cssClass="checkbox" οnclick="checkAll()"/>
</td>
<td><!-- 子checkbox -->
   <s:checkbox name="ids"  fieldValue="" cssClass="checkbox" οnclick="changeCheckCount()"/>
   <s:checkbox name="ids"  fieldValue="" cssClass="checkbox" οnclick="changeCheckCount()"/>
   <s:checkbox name="ids"  fieldValue="" cssClass="checkbox" οnclick="changeCheckCount()"/>
   <s:checkbox name="ids"  fieldValue="" cssClass="checkbox" οnclick="changeCheckCount()"/>
</td>

2.获取checkbox被选中的个数,并将checkbox的值组织成字符串

<script type="text/javascript">
//1、获取checkbox选中的个数:count
//2、将选中的checkbox的值(此例子为id)组织成"id,id,id,..."类型的字符串,方便action获取:ids
function checkbox(){
    var count=0;
    var ids="";
    $("input[type='checkbox'][name='ids']").each(function(index,data){
       if(this.checked){
          count++;
          if(count==1){
              ids=$(this).val();
          }else{
              ids=ids+","+$(this).val();
          }
       }
   });
}
</script> 
<td>
   <s:checkbox name="ids"  fieldValue="" cssClass="checkbox"  />
   <s:checkbox name="ids"  fieldValue="" cssClass="checkbox" "/>
   <s:checkbox name="ids"  fieldValue="" cssClass="checkbox" "/>
   <s:checkbox name="ids"  fieldValue="" cssClass="checkbox" "/>
</td>


Select类


1.jQuery实现下拉列表的联动,实现省份和城市的关联


<script type="text/javascript">
//实现省份和城市的二级联动
/*
jQuery.post( url, [data], [callback], [type] ) :使用POST方式来进行异步请求,[]为可选属性,此例子选了[data],[callback] 
参数:
url (String) : 发送请求的URL地址.
data (Map) : (可选) 要发送给服务器的数据,以 Key/value 的键值对形式表示。
callback (Function) : (可选) 载入成功时回调函数(只有当Response的返回状态是success才是调用该方法)。
type (String) : (可选)官方的说明是:Type of data to be sent。其实应该为客户端请求的类型(JSON,XML,等等) 
*/
function showCity(value){
  //通过action里的showCity函数实现通过省份名字获取对应省份下的城市列表,并返回相应的数据
  //{name:value}:value为省份下拉列表传过来的省份名字
    $.post("${pageContext.request.contextPath}/company_showCity.action",{name:value} ,function(data,textStatuts){
            //alert(data);
            var dataObj=eval("("+data+")");
            //alert(dataObj);
            //先删除之前一次加载的城市
            $("select[name='city'] option[value!='']").remove();
            //将城市封装成option后加到select里,格式如下
            // <select name="city" style="width:90%">
                //<option value="">--------</option>
            //</select>
            for(var i=0;i<dataObj.length;i++){
                  var $option=$("<option></option>");
                  $option.attr("value",dataObj[i].name);
                  $option.text(dataObj[i].name);
                  $("select[name='city']").append($option);
            }
     });
}
</script>


<tr>
  <td>省份:</td>
  <td>
        <s:select list="#provinceList" name="province" id="province"  
                listKey="name" listValue="name" 
                headerKey="" headerValue="--------"
                cssStyle="width:90%" οnchange="showCity(this.value)">
        </s:select>
  </td>
  <td>城市:</td>
  <td>
     <s:select list="{}" name="city" id="city"
                headerKey="" headerValue="--------" cssStyle="width:90%" >
     </s:select>
  </td>
</tr>


company.action中的showCity函数


/** 通过省份显示对应城市  
 * @throws IOException **/
public String showCity() throws IOException{
  //拿到jsp中省份的名字
  String name=request.getParameter("name");
  if(StringUtils.isNotBlank(name)){
  //通过省份名字拿到对应省份实体(下面查询城市时,用来拿省份id)
  Province province=provinceService.findProvinceByName(name);
  //通过省份id查询该省份下的所有城市
  List<City> cityList=cityService.findCityByPid(province.getId());
  //New一个JsonConfig
  JsonConfig config=new JsonConfig();
  //设置不要获取的属性列,只取city表里的name属性,根据自己定义的city表进行定义,
  config.setExcludes(new String[]{"id","pycode","pid","postcode","areacode"});
  //将List转换为jsonArray
  JSONArray jsonArray=JSONArray.fromObject(cityList,config);
  response.setCharacterEncoding("utf-8");
  //将jsonArray转成字符串后发送给jsp页面
  response.getWriter().print(jsonArray.toString());
  }
  return null;
}


工具类


1.实现一个实时时钟

js文件:onclock.js


//此文件为:onclock.js
function clockon(bgclock){
  var now=new Date();
  var year=now.getYear();
  var month=now.getMonth();
  var date=now.getDate();
  var day=now.getDay();
  var hour=now.getHours();
  var minu=now.getMinutes();
  var sec=now.getSeconds();
  var week;
  month=month+1;
  if(month<10) month="0"+month;
  if(date<10) date="0"+date;
  if(hour<10) hour="0"+hour;
  if(minu<10) minu="0"+minu;
  if(sec<10) sec="0"+sec;
  var arr_week=new Array("星期日","星期一","星期二","星期三","星期四","星期五","星期六");
  week=arr_week[day];
  var time="";
  time=year+"年"+month+"月"+date+"日 "+week+" "+hour+":"+minu+":"+sec;
  if(document.all){
  bgclock.innerHTML="<b>"+time+"</b>";
  }
  var timer=setTimeout("clockon(bgclock)",200);
}


jsp页面代码如下:

<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- 引入js文件,根据自己放的路径修改 -->
<script src="${pageContext.request.contextPath}/script/onclock.js"></script>
<title>无标题文档</title>
</head>
<!-- 在body内加入onLoad="clockon(bgclock)" -->
<body onLoad="clockon(bgclock)">
  <!-- 在想要放时间的地方加入下面这行代码即可 -->
  <div align="left" id="bgclock"></div>
</body>
</html>


可以根据需求修改onclock.js文件中的配置,如:去掉年月日等等。  


相关文章
|
11月前
|
Rust 前端开发 JavaScript
JavaScript 中 Signals 的演变
最近“ Signals ”一词在前端世界中引起了不小的讨论。 在看似很短的时间内,它们好像在很多前端框架中都有出现,但它并不是一个新事物,本文将深入探讨 JS 中 Signals 的演变
153 0
JavaScript 中 Signals 的演变
|
存储 JavaScript 前端开发
原生JavaScript灵魂拷问,你能答上多少(一)1
原生JavaScript灵魂拷问,你能答上多少(一)1
130 0
|
JavaScript 前端开发
原生JavaScript灵魂拷问,你能答上多少(一)2
原生JavaScript灵魂拷问,你能答上多少(一)2
89 0
|
JavaScript 前端开发 NoSQL
全栈式 JavaScript 介绍
如今,在创建一个Web应用的过程中,你需要做出许多架构方面的决策。当然,你会希望做的每一个决定都是正确的:你想要使用能够快速开发的技术,支持持续的迭代,最高的工作效率,迅速,健壮性强。你想要精益求精并且足够敏捷。你希望你选择的技术能够在短期和长期上都让你的项目取得成功。但这些技术都不是轻而易举就能选出来的。
182 0
全栈式 JavaScript 介绍
|
JSON Rust JavaScript
几年后的JavaScript会是什么样的?
来看看这些有趣的ECMA提案(stage1/2/3)最近看到了一些很有趣的 ECMAScript 提案,如 Record 与 Tuple 数据类型,借鉴自 RxJS 的Observable,借鉴自函数式编程的 `throw Expressions`,带来更好错误处理能力的 `Error Cause` 等。
几年后的JavaScript会是什么样的?
|
JavaScript 前端开发 数据格式
无法忽视的JavaScript技巧
  好程序员Web前端分享无法忽视的JavaScript技巧。在大家从事web前端的工作中,很容易忽视一些JavaScript的小技巧,今天为大家总结了一些容易被大家忽略的技巧,希望能够对大家有所帮助。
1205 0
|
JavaScript 前端开发 开发者
10个JavaScript难点
JS开发者应该读懂这篇博客...
1530 0
|
JavaScript 前端开发 测试技术
2018 年最值得关注的 JavaScript 趋势
JavaScript 渗透的范围越来越广,它能做的事情已经远不止前端开发而已。不久前stateofjs.com刚刚发布了 2017 JavaScript 现状报告 ,现在Ryan Chartrand非常应景地推出了 2018年的JavaScript发展趋势 ,把这两份文章一起结合来看,相信作为JS开发者的你一定不再迷茫。
7333 0