原生javascript目前我认为对我比较有用的好处就是不用再多添加一个JQ库
JS数组与字符串转换,JS对象转JS数组,json转数组,数组转json
- <span class="label label-default" data-id="1" id="test">data-id是1</span>
- <script>
- var btn = document.getElementById("test");
- //touch事件 写法1
- btn.onmousemove = function(e){
- alert("ok");
- };
- //touch事件 写法2
- btn["onmousemove"] = function(e){
- alert("ok1");
- };
- //click事件 写法1
- btn.onclick = function(e){
- alert("ok");
- };
- //click事件 写法2
- btn["onclick"] = function(e){
- alert("ok1");
- };
- </script>
- <form name="form1">
- <input type="text" id="phone" name="phone" value="">
- <input type="text" id="avatar" name="avatar">
- <select name="taocan" id="taocan">
- <option value="">选择套餐</option>
- <option value="经济套餐¥388">经济套餐¥388</option>
- <option value="标准套餐¥598">标准套餐¥598</option>
- <option value="高级套餐¥888">高级套餐¥888</option>
- <option value="豪华套餐¥1288">豪华套餐¥1288</option>
- <option value="卡通套餐¥1588">卡通套餐¥1588</option>
- </select>
- <input class="vi" name="vi[]" type="checkbox" value="名片">
- <input class="vi" name="vi[]" type="checkbox" value="纸杯">
- </form>
- <script>
- document.getElementsByName('phone').value; //得到name=phone的数组
- document.getElementsByTagName('input').value; //得到所有标签为input的数组
- document.getElementById("avatarimg").innerHTML;
- document.getElementsByClassName('vi').checked;
- document.form1.phone.focus();
- if(form1.taocan.value ==""){
- alert("套餐未选择!");
- document.form1.taocan.focus();
- return false;
- }
- var vi = document.getElementsByClassName('vi');
- var j = 0;
- for (var i = 0; i < vi.length; i++) {
- if (vi[i].checked) {
- j++;
- }
- }
- // alert(j); //获取多选按钮组的数量
- // return false;
- if(j<1){
- alert("VI项未选择!");
- document.form1.vi.focus();
- return false;
- }
- </script>
- var s= document.getElementById("test");
- del_ff(s); //清理空格
- var chils= s.childNodes; //得到s的全部子节点
- var par=s.parentNode; //得到s的父节点
- var ns=s.nextSbiling; //获得s的下一个兄弟节点
- var ps=s.previousSbiling; //得到s的上一个兄弟节点
- var fc=s.firstChild; //获得s的第一个子节点
- var lc=s.lastChild; //获得s的最后一个子节点
javascript克隆一个对象并使用新对象替换它(本来是上传表单多次点击无效写的,发现这个方法没效果):
- let imageInputObj = document.getElementById('uploadImageInput');
- let newNode = imageInputObj.cloneNode();//克隆一个上传表单
- var oldNode = imageInputObj;
- //imageInputObj.replaceNode(newObj);
- imageInputObj.parentNode.replaceChild(newNode, oldNode);
javascript为指定对象绑定事件:
- var fn1 = function () {alert('blue');this.style.background ='blue'};
- var fn2 = function () {alert('red');this.style.background ='red'};
- function adde(){
- var d = document.getElementById('school');
- d.addEventListener('click',fn1);
- d.addEventListener('click',fn2);
- }
- function reme(){
- var d = document.getElementById('school');
- //d.removeEventListener('click',fn1);//只剩fn1
- d.removeEventListener('click',fn2);
- }
1.addClass:为指定的dom元素添加样式
2.removeClass:删除指定dom元素的样式
3.toggleClass:如果存在(不存在),就删除(添加)一个样式
4.hasClass:判断样式是否存在
- <div id = "test" style = "width:250px;height:100px;">
- sssssssssssss
- </div>
- <input type = "button" value = "toggleClassTest" onclick = "toggleClassTest();" />
- <script type="text/javascript">
- function hasClass(obj, cls) {
- return obj.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));
- }
- function addClass(obj, cls) {
- if (!this.hasClass(obj, cls)) obj.className += " " + cls;
- }
- function removeClass(obj, cls) {
- if (hasClass(obj, cls)) {
- var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)');
- obj.className = obj.className.replace(reg, ' ');
- }
- }
- function toggleClass(obj,cls){
- if(hasClass(obj,cls)){
- removeClass(obj, cls);
- }else{
- addClass(obj, cls);
- }
- }
- function toggleClassTest(){
- var obj = document. getElementById('test');
- toggleClass(obj,"testClass");
- }
- </script>
- var el = document.getElementById("idHeader");
- alert(el.getAttribute("id")); //获取属性为id的值
- alert(el.id);
- setAttribute() 为设置属性值
- el.setAttribute("disabled", true); //方式一
- el.className = "abc";//方式二
js插入节点appendChild insertBefore
- <div class="btns"><input type="button" value="插入元素" id="creatbtn"/></div>
- <div id="box-one">
- <p class="con2" id="p1">1</p>
- <p class="con2" >2</p>
- <p class="con2" >3</p>
- </div>
- <script>
- window.onload = function () {
- var btn = document.getElementById("creatbtn");
- btn.onclick = function() {
- insertEle();
- }
- }
- function insertEle() {
- var oTest = document.getElementById("box-one");
- var newNode = document.createElement("div");
- newNode.innerHTML = " This is a newcon ";
- // oTest.appendChild(newNode);
- oTest.insertBefore(newNode,null); // 这两种方法均可实现,
- }
- </script>
- <script>
- window.onload = function () {
- var btn = document.getElementById("creatbtn");
- btn.onclick = function() {
- insertEle();
- }
- }
- function insertEle() {
- var oTest = document.getElementById("box-one");
- var newNode = document.createElement("div");
- var reforeNode = document.getElementById("p1");
- newNode.innerHTML = " This is a newcon ";
- oTest.insertBefore(newNode,reforeNode); // 新建的元素节点插入到 id为p1的元素前面
- }
- </script>
- <script>
- window.onload = function () {
- var btn = document.getElementById("creatbtn");
- btn.onclick = function() {
- insertEle();
- }
- }
- function insertEle() {
- var oTest = document.getElementById("box-one");
- var newNode = document.createElement("div");
- var reforeNode = document.getElementById("p1");
- newNode.innerHTML = " This is a newcon ";
- oTest.insertBefore(newNode,reforeNode.nextSibling);//新建的元素节点插入到 id为p1后面节点元素的前面,也就是说 插入id为P1节点元素的后面。
- }
- </script>
1、关闭指定的dom
javascript版:
- <a href="javascript:;" onClick="document.getElementById('DV').style.display = 'none';">关闭</a>
jquery版:
- <a href="javascript:;" onClick="$('#shop_car').fadeOut()">关闭</a>
2、返回,退后一步,后退,后退一步
- <a href="javascript:history.go(-1)">返回上一页</a>
- <a href="javascript:location.reload()">刷新当前页面</a>
- <a href="javascript:" onclick="history.go(-2); ">返回前两页</a>
- <a href="javascript:" onclick="self.location=document.referrer;">返回上一页并刷新</a>
- <a href="javascript:" onclick="history.back(); ">返回上一页</a>
页面跳转:
- <span onclick="window.location.href='list.php'">点击跳转</span>
在新窗口打开链接,在新窗口页面跳转
- window.open("http://www.yoyo88.cn");
Javascript刷新页面的几种方法:
- history.go(0);
- location.reload();
- location=location;
- location.assign(location);
- document.execCommand('Refresh');
- window.navigate(location);
- location.replace(location);
- document.URL=location.href;
自动刷新页面的方法:
1.页面自动刷新:把如下代码加入<head>区域中
- <meta http-equiv="refresh" content="10">
10指每隔10秒刷新一次页面.
2.页面自动跳转:把如下代码加入<head>区域中
- <meta http-equiv="refresh" content="10;url=http://www.baidu.com">
10指隔10秒后跳转到http://www.baidu.com页面
js自动刷新当前页面:
- <script language="JavaScript">
- function myrefresh()
- {
- window.location.reload();
- }
- setTimeout('myrefresh()',1000); //指定1秒刷新一次
- </script>
js刷新框架
- <script language=JavaScript>
- //刷新包含该框架的页面用
- parent.location.reload();
- //子窗口刷新父窗口 或 <a href="javascript:opener.location.reload()">刷新</a>
- self.opener.location.reload();
- //如何刷新另一个框架的页面用
- parent.另一FrameID.location.reload();
- </script>
js字符串常用判断方法
- <script type="text/javascript">
- /*
- function obj$(id) 根据id得到对象
- function val$(id) 根据id得到对象的值
- function trim(str) 删除左边和右边空格
- function ltrim(str) 删除左边空格
- function rtrim (str) 删除右边空格
- function isEmpty(str) 字串是否有值
- function equals(str1, str2) js判断比较两字符串是否相等
- function equalsIgnoreCase(str1, str2) js判断忽略大小写比较两个字符串是否相等
- function isChinese(str) js判断判断是否中文
- function isEmail(strEmail) js判断是否电子邮件
- function isImg(str) js判断是否是一个图片格式的文件jpg|jpeg|swf|gif
- function isInteger(str) js判断是否是一个整数
- function IsNum1(str) js判断是否是正整数
- function IsNum2(str) js判断是否为数字
- function isFloat js判断是否是一个浮点数
- function isPost(str) js判断是否邮编(1位至6位
- function isMobile(str) js判断是否是手机号
- function isPhone(str) js判断是否是电话号码必须包含区号,可以含有分机号
- function isQQ(str) js判断是否合法的QQ号码
- function isIP(str) js判断是否是合法的IP
- function isDate(str) js判断是否日期类型(例:2005-12-12)
- function isIdCardNo(idNumber) js判断是否是合法的身份证号
- */
- function obj$(id)
- {
- return document.getElementById(id);
- }
- function val$(id)
- {
- var obj = document.getElementById(id);
- if(obj !== null)
- {
- return obj.value;
- }
- return null;
- }
- function trim(str)
- {
- return str.replace(/(^\s*)|(\s*$)/g, '');
- }
- function ltrim(str)
- {
- return str.replace(/^\s*/g,'');
- }
- function rtrim(str)
- {
- return str.replace(/\s*$/,'');
- }
- function isEmpty(str)
- {
- if(str != null && str.length > 0)
- {
- return true;
- }
- return false;
- }
- function equals(str1, str2)
- {
- if(str1 == str2)
- {
- return true;
- }
- return false;
- }
- function equalsIgnoreCase(str1, str2)
- {
- if(str1.toUpperCase() == str2.toUpperCase())
- {
- return true;
- }
- return false;
- }
- function isChinese(str)
- {
- var str = str.replace(/(^\s*)|(\s*$)/g,'');
- if (!(/^[\u4E00-\uFA29]*$/.test(str)
- && (!/^[\uE7C7-\uE7F3]*$/.test(str))))
- {
- return false;
- }
- return true;
- }
- function isEmail(str)
- {
- if(/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(str))
- {
- return true
- }
- return false;
- }
- function isImg(str)
- {
- var objReg = new RegExp("[.]+(jpg|jpeg|swf|gif)$", "gi");
- if(objReg.test(str))
- {
- return true;
- }
- return false;
- }
- function isInteger(str)
- {
- if(/^-?\d+$/.test(str))
- {
- return true;
- }
- return false;
- }
- function isFloat(str)
- {
- if(/^(-?\d+)(\.\d+)?$/.test(str)
- {
- return true;
- }
- return false;
- }
- function isPost(str)
- {
- if(/^\d{1,6}$/.test(str))
- {
- return true;
- }
- return false;
- }
- function isMobile(str)
- {
- if(/^1[35]\d{9}/.test(str))
- {
- return true;
- }
- return false;
- }
- function isPhone(str)
- {
- if(/^(0[1-9]\d{1,2}-)\d{7,8}(-\d{1,8})?/.test(str))
- {
- return true;
- }
- return false;
- }
- function isQQ(str){
- if(/^\d{5,9}$/.test(str))
- {
- return true;
- }
- return false;
- }
- function isIP(str){
- var reg = /^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$/;
- if(.test(str))
- {
- return true;
- }
- return false;
- }
- function isDate(str)
- {
- var reg = /^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$/;
- if(reg.test(str))
- {
- return true;
- }
- return false;
- }
- function isIdCardNo(idNumber)
- {
- var factorArr = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
- var varArray = new Array();
- var lngProduct = 0;
- var intCheckDigit;
- var idNumber.length = ;
- if ((idNumber.length != 15) && (idNumber.length != 18))
- {
- return false;
- }
- for(i=0;i<idNumber.length;i++)
- {
- varArray[i] = idNumber.charAt(i);
- if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17))
- {
- return false;
- }
- else if (i < 17)
- {
- varArray[i] = varArray[i]*factorArr[i];
- }
- }
- if (idNumber.length == 18)
- {
- var date8 = idNumber.substring(6,14);
- if (checkDate(date8) == false)
- {
- return false;
- }
- for(i=0;i<17;i++)
- {
- lngProduct = lngProduct + varArray[i];
- }
- intCheckDigit = 12 - lngProduct % 11;
- switch (intCheckDigit)
- {
- case 10:
- intCheckDigit = 'X';
- break;
- case 11:
- intCheckDigit = 0;
- break;
- case 12:
- intCheckDigit = 1;
- break;
- }
- if (varArray[17].toUpperCase() != intCheckDigit)
- {
- return false;
- }
- }
- else
- {
- var date6 = idNumber.substring(6,12);
- if (checkDate(date6) == false)
- {
- return false;
- }
- }
- return true;
- }
- </script>
- //判断是否是正整数
- function IsNum1(s)
- {
- if(s!=null){
- var r,re;
- re = /\d*/i; //\d表示数字,*表示匹配多个数字
- r = s.match(re);
- return (r==s)?true:false;
- }
- return false;
- }
- //判断是否为数字
- function IsNum2(s)
- {
- if (s!=null && s!="")
- {
- return !isNaN(s);
- }
- return false;
- }
自从javascript有了各种框架之后,比如jquery,使用ajax已经变的相当简单了。但有时候为了追求简洁,可能项目中不需要加载jquery这种庞大的js插件。但又要使用到ajax这种功能该如何办呢?下面和大家分享几种利用javascript实现原生ajax的方法。
实现ajax之前必须要创建一个 XMLHttpRequest 对象。如果不支持创建该对象的浏览器,则需要创建 ActiveXObject,具体方法如下:
- <script>
- var xmlHttp;
- function createxmlHttpRequest() {
- if (window.ActiveXObject) {
- xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
- } else if (window.XMLHttpRequest) {
- xmlHttp=new XMLHttpRequest();
- }
- }
- </script>
(1)下面使用上面创建的xmlHttp实现最简单的ajax get请求:
- <script>
- function doGet(url){
- // 注意在传参数值的时候最好使用encodeURI处理一下,以防出现乱码
- createxmlHttpRequest();
- xmlHttp.open("GET",url);
- xmlHttp.send(null);
- xmlHttp.onreadystatechange = function() {
- if ((xmlHttp.readyState == 4) && (xmlHttp.status == 200)) {
- alert('success');
- } else {
- alert('fail');
- }
- }
- }
- </script>
(2)使用上面创建的xmlHttp实现最简单的ajax post请求:
- <script>
- function doPost(url,data){
- // 注意在传参数值的时候最好使用encodeURI处理一下,以防出现乱码
- createxmlHttpRequest();
- xmlHttp.open("POST",url);
- xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
- xmlHttp.send(data);
- xmlHttp.onreadystatechange = function() {
- if ((xmlHttp.readyState == 4) && (xmlHttp.status == 200)) {
- alert('success');
- } else {
- alert('fail');
- }
- }
- }
- </script>
- var jsonObj={"name":"傅红雪","age":"24","profession":"刺客"},key = 'age';
- alert(jsonObj[''+key+'']);
第二种
- console.log(eval('jsonObj.'+key))
在input上添加onkeyup="value=value.replace(/[^\d]/g,'')"
- var str = "0123456789";//
- alert(str.substring(0));//------------"0123456789"
- alert(str.substring(5));//------------"56789"
- alert(str.substring(10));//-----------""
- alert(str.substring(12));//-----------""
- alert(str.substring(-5));//-----------"0123456789"
- alert(str.substring(-10));//----------"0123456789"
- alert(str.substring(-12));//----------"0123456789"
- alert(str.substring(0,5));//----------"01234"
- alert(str.substring(0,10));//---------"0123456789"
- alert(str.substring(0,12));//---------"0123456789"
- alert(str.substring(2,0));//----------"01"
- alert(str.substring(2,2));//----------""
- alert(str.substring(2,5));//----------"234"
- alert(str.substring(2,12));//---------"23456789"
- alert(str.substring(2,-2));//---------"01"
- alert(str.substring(-1,5));//---------"01234"
- alert(str.substring(-1,-5));//--------""
- alert(str.substr(0));//---------------"0123456789"
- alert(str.substr(5));//---------------"56789"
- alert(str.substr(10));//--------------""
- alert(str.substr(12));//--------------""
- alert(str.substr(-5));//--------------"0123456789"
- alert(str.substr(-10));//-------------"0123456789"
- alert(str.substr(-12));//-------------"0123456789"
- alert(str.substr(0,5));//-------------"01234"
- alert(str.substr(0,10));//------------"0123456789"
- alert(str.substr(0,12));//------------"0123456789"
- alert(str.substr(2,0));//-------------""
- alert(str.substr(2,2));//-------------"23"
- alert(str.substr(2,5));//-------------"23456"
- alert(str.substr(2,12));//------------"23456789"
- alert(str.substr(2,-2));//------------""
- alert(str.substr(-1,5));//------------"01234"
- alert(str.substr(-1,-5));//-----------""
- <input type="button" id="GetCode" value="获取验证码" onclick="javascript:getCode(this);">
- <script>
- function getCode(obj){
- var phe=document.getElementById('username').value;
- var countdown=60;
- if(phe.length<11)
- {
- layer.msg('请输入正确的手机格式');
- return false;
- }
- time(obj);
- $.ajax({
- type: "POST",
- url: "/e/extend/phone/index.php",
- dataType: 'html',
- data:{
- phe:phe,
- },
- success:function(data,status){
- layer.msg('发送成功');
- return false;
- },
- error:function(){
- layer.msg('发送验证码不成功,请重试');
- return false;
- }
- })
- };
- var wait=60;
- function time(obj) {
- if (wait == 0) {
- obj.removeAttribute("disabled");
- obj.value="免费获取验证码";
- wait = 60;
- } else {
- obj.setAttribute("disabled", true);
- obj.value="重新发送(" + wait + ")";
- wait--;
- setTimeout(function() {
- time(obj)
- },
- 1000)
- }
- }
- </script>
- <input type="checkbox" class="selection" name="selection[]" value="436">
- <input type="checkbox" class="selection" name="selection[]" value="437">
- <input type="checkbox" class="selection" name="selection[]" value="438">
- <script>
- (function($){
- var userPlugin = function(){
- var _self = this;
- var ses = {
- 'checkbox_class' : '.selection',
- };
- _self.getChooseCheckboxVal = function(e){
- var valObj = [];
- var valString = "";
- var temp = $(ses.checkbox_class);
- for(var i=0;i<temp.length;i++){
- if(temp[i].checked == true){
- valObj.push(temp[i].value);
- }
- }
- valString = valObj.join();
- return valObj;
- }
- }
- var userHandle = new userPlugin();
- $(".comply").on('click', function() {
- userHandle.getChooseCheckboxVal();
- });
- })(jQuery);
- </script>
- <table>
- <tr>
- <td><input type="checkbox" name="code_Value">1</td>
- </tr>
- <tr>
- <td><input type="checkbox" name="code_Value">2</td>
- </tr>
- <tr>
- <td><input type="checkbox" name="code_Value">3</td>
- </tr>
- <tr>
- <td><input type="checkbox" name="code_Value">4</td>
- </tr>
- <tr>
- <td>
- <input type="button" name='selectAll' value="全选" onclick="CheckAll(this);">
- </td>
- </tr>
- </table>
- <script>
- //全选
- function CheckAll(obj){
- var $dom = document.all['code_Value'];
- // var $dom = document.getElementsByName("code_Value");
- if(obj.name == 'selectAll'){
- if($dom.length){
- for(var i=0;i<$dom.length;i++)
- {
- $dom[i].checked = true;
- }
- obj.name='unSelectAll';
- obj.value='取消全选';
- }else{
- $dom.checked = true;
- }
- }else{
- if($dom.length){
- for(var i=0;i<$dom.length;i++)
- {
- $dom[i].checked = false;
- }
- obj.name='selectAll';
- obj.value='全选';
- }else{
- $dom.checked = false;
- }
- }
- };
- </script>
- jQuery(function($){
- //全选
- $("#btn1").click(function(){
- $("input[name='checkbox']").attr("checked","true");
- });
- //取消全选
- $("#btn2").click(function(){
- $("input[name='checkbox']").removeAttr("checked");
- });
- //选中所有基数
- $("#btn3").click(function(){
- $("input[name='checkbox']:even").attr("checked","true");
- });
- //选中所有偶数
- $("#btn6").click(function(){
- $("input[name='checkbox']:odd").attr("checked","true");
- });
- //反选
- $("#btn4").click(function(){
- $("input[name='checkbox']").each(function(){
- if($(this).attr("checked"))
- {
- $(this).removeAttr("checked");
- }
- else
- {
- $(this).attr("checked","true");
- }
- })
- });
- //或许选择项的值
- var aa="";
- $("#btn5").click(function(){
- $("input[name='checkbox']:checkbox:checked").each(function(){
- aa+=$(this).val()
- })
- document.write(aa);
- })
- });
- <table>
- <tr>
- <td>
- <select id="test">
- <option value="A">英语</option>
- <option value="B">汉语</option>
- <option value="C" selected="selected">德语</option>
- <option value="D">法语</option>
- </select>
- </td>
- </tr>
- <tr>
- <td>
- <input type="button" name='selectAll' value="获取" onclick="getSelect(this);">
- </td>
- </tr>
- </table>
- <script>
- function getSelect(){
- //1:拿到select对象:
- var myselect=document.getElementById("test");
- //2:拿到选中项的索引:
- var index=myselect.selectedIndex ; // selectedIndex代表的是你所选中项的index
- //3:拿到选中项options的value:
- var val = myselect.options[index].value;
- //4:拿到选中项options的text:
- var text = myselect.options[index].text;
- console.log(val);
- console.log(text);
- }
- </script>
JQ版本:
- <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/1.8.3/jquery.min.js"></script>
- <script>
- $(document).ready(function(){
- //获取当前值及label
- alert($("#test option:selected").val() + ","+ $("select option:selected").text());
- //指定默认选项
- $("#test option:nth-child(4)").attr("selected", true);
- //绑定onchange事件
- $("#test").change(function(){
- if($("#test option").is(":selected")){
- alert("you select the value is "+$(this).val());
- }
- });
- //获取选中项的值和label
- $("#test option").click(function() {
- alert($(this).val() + "," + $(this).text());
- });
- });
- </script>
获取radio选中的value值
- <form name="form1" id="loginbox" method="post">
- <input name="lifetime" type="radio" value="0" checked="">不保存
- <input type="radio" name="lifetime" value="3600">一小时
- <input type="radio" name="lifetime" value="86400">一天
- <input type="radio" name="lifetime" value="2592000">一个月
- <input type="radio" name="lifetime" value="315360000">永久
- </form>
javascript版:
- <script language="javascript">
- var radionum = document.getElementById("loginbox").lifetime;
- for(var i=0;i<radionum.length;i++){
- if(radionum[i].checked){
- lifetime = radionum[i].value
- }
- }
- lifetime=lifetime;
- alert(lifetime);
- </script>
JQ版:
- <script>
- var value = $('input[name="radioName"]:checked').val(); //获取被选中Radio的Value值
- </script>
- <table width="500">
- <tr>
- <td><input type="text" id="ids" value="" class="form-control"><br></td>
- </tr>
- <tr>
- <td id="test">
- <span class="label label-default" data-id="1">data-id是1</span>
- <span class="label label-default" data-id="2">data-id是2</span>
- <span class="label label-default" data-id="3">data-id是3</span>
- <span class="label label-default" data-id="4">data-id是4</span>
- </td>
- </tr>
- </table>
- <script>
- var obj = document.getElementById("test");
- obj.addEventListener("click",function(ev){ //绑定点击事件
- var target = ev.target; //返回事件的目标节点,这里返回span的dom
- console.log(target);
- return target;//返回的target即是你要的子元素
- });
- </script>
- <table width="500">
- <tr>
- <td><input type="text" id="ids" value="" class="form-control"><br></td>
- </tr>
- <tr>
- <td id="test">
- <span class="label label-default" data-id="1">data-id是1</span>
- <span class="label label-default" data-id="2">data-id是2</span>
- <span class="label label-default" data-id="3">data-id是3</span>
- <span class="label label-default" data-id="4">data-id是4</span>
- </td>
- </tr>
- </table>
- <script>
- var $obj = document.getElementById("test"),
- $hid_input = document.getElementById("ids"),
- $cls = "label-info";
- $obj.addEventListener("click",function(ev){
- var target = ev.target,
- $attribute = target.getAttribute("data-id"),
- $wz = $hid_input.value.indexOf($attribute);
- if(hasClass(target, $cls)) {
- var reg = new RegExp('(\\s|^)' + $cls + '(\\s|$)');
- target.className = target.className.replace(reg, ' ');
- }else{
- target.className += " " + $cls;
- }
- s0 = "," + $hid_input.value;
- var new_val = "," + $attribute;
- if(s0.indexOf(new_val) != -1){
- $hid_input.value = s0.replace(new_val,"").substr(1);
- }else{
- if($hid_input.value === ""){
- $hid_input.value += $attribute;
- }else{
- $hid_input.value += new_val;
- }
- }
- return $hid_input.value;
- });
- function hasClass(obj, cls) {
- return obj.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));
- }
- </script>
提示:可以修改后运行.
- var EasyReflection = {
- "美肤" : "e1",
- "素描" : "e2",
- "自然增强" : "e3",
- "紫调" : "e4",
- "柔焦" : "e5",
- "复古" : "e6",
- "黑白" : "e7",
- "仿lomo" : "e8",
- "亮白增强" : "e9",
- "灰白" : "e10",
- "灰色" : "e11",
- "暖秋" : "e12",
- "木雕" : "e13",
- "粗糙" : "e14"
- };
- var effectModel = '<li class="e_item"><div class="imgWrapper"><img src="theme/alloyimage/images/effect/{pic}.png" alt="" />{effect}</div></li>';
- var html = '<li class="e_item"><div class="imgWrapper"><img src="theme/alloyimage/images/effect/e1.jpg" alt="" />原图</div></li>';
- for(var i in EasyReflection){
- html += effectModel.replace("{effect}",i.length < 3 ? i + "效果" : i).replace("{pic}", EasyReflection[i]);
- }
- document.getElementById("effects").innerHTML = html;
- setTimeout(function () {
- alert("111");
- }, 5000);
一、数组转字符串
- var a, b;
- a = new Array(0,1,2,3,4);
- b = a.join("-");
二、字符串转数组
- var s = "abc,abcd,aaa";
- ss = s.split(",");// 在每个逗号(,)处进行分解。
三、each元素,组合字符串
- //保存常用选择器
- var list = $(".left-panel dl#list"); //dom
- var listChildren = "dd"; //dom下操作的元素
- var orderList = $(".left-panel #weightList"); //原来的排序数组
- var idList = $(".left-panel #widgetList"); //原来的插件ID数组
- // 保存原来的排列顺序
- var orders = []; // 原来的排列顺序
- var ids = []; // 插件ID数组
- list.children(listChildren).each(function() {
- orders.push($(this).attr("id")); //获取原排列顺序
- ids.push($(this).attr("widget-id"));
- });
- orderList.val(orders.join(','));
- idList.val(ids.join(','));
四、JS判断数组数量
- var arr=[55,32,5,90,60,98,76,54];//包含8个数值的数组arr
- document.write(arr.length); //显示数组长度8
- document.write(arr[7]); //显示第8个元素的值54
五、es6中,对象转数组 / JS对象转JS数组 / 数组转json :
- //es6中的from方法
- let arr = Array.from(对象名);
六、json字符串与json对象互转 / json转数组:
- JSON.parse(jsonstr); //可以将json字符串转换成json对象
- JSON.stringify(jsonobj); //可以将json对象转换成json对符串
- //数组转json串
- var arr = [1,2,3, { a : 1 } ];
- JSON.stringify( arr );
- //json字符串转数组
- var jsonStr = '[1,2,3,{"a":1}]';
- JSON.parse( jsonStr );
php数组与json对象互转:
- <?php
- $arr = array(0 => 'a', 1 => 'b', 2 => 'c');
- $jsarr = "";
- foreach ($arr as $key => $value) {
- $jsarr .= "'{$value}',";
- }
- $jsarr = '[' . trim($jsarr, ',') . ']';
- ?>
- <script>
- var arr = <?=$jsarr?>;
- console.log(arr)
- </script>
- var str = '我是一字符串';
- str.replace('一',''); // 将“一”变成空字符(删除)
- <script>
- //批量替换指定的符号
- var ext = "jpg|png|gif|pdf|jpeg|xls|xlsx|docx|doc";
- var regS = new RegExp("\\|","g");
- var ext2 = ext.replace(regS,","); //将所有的 | 替换成, 输出:jpg,png,gif,pdf,jpeg,xls,xlsx,docx,doc
- // 替换所有要替换字符
- var str = "$Hello World!$Hello World!$Hello World!";
- //把所有的“Hello World!”替换为“Welcome you!”。“/g”是替换全部。
- alert(str.replace(/Hello World!/g,"Welcome you!"));
- </script>
- // 方法1:循环替换,因为js里的replace默认只会替换一个
- var a = 'abc;def;hij;';
- while(a.indexOf(';') >= 0)
- a = a.replace(';',',');
- alert(a);
- //方法2用正则替换:
- var a = 'abc;def;hij;';
- a = a.replace(/;/g,',');
- alert(a);
2019.3.16
- function formatDateTime(timeStamp) {
- var date = date = new Date();
- // date.setTime(timeStamp * 1000);//如果是10位的时间戳(正常后端都是10位时间戳,js需要13位时间戳),需要乘1000
- date.setTime(timeStamp);
- var y = date.getFullYear();
- var m = date.getMonth() + 1;
- m = m < 10 ? ('0' + m) : m;
- var d = date.getDate();
- d = d < 10 ? ('0' + d) : d;
- var h = date.getHours();
- h = h < 10 ? ('0' + h) : h;
- var minute = date.getMinutes();
- var second = date.getSeconds();
- minute = minute < 10 ? ('0' + minute) : minute;
- second = second < 10 ? ('0' + second) : second;
- return y + '-' + m + '-' + d+' '+h+':'+minute+':'+second;
- };
- console.log(formatDateTime(1551052800000));
- // 2019-02-25 08:00:00
- <script type="text/javascript">
- // 获取当前时间戳(以s为单位)
- var timestamp = Date.parse(new Date());
- timestamp = timestamp / 1000;
- //当前时间戳为:1403149534
- console.log("当前时间戳为:" + timestamp);
- // 获取某个时间格式的时间戳
- var stringTime = "2014-07-10 10:21:12";
- var timestamp2 = Date.parse(new Date(stringTime));
- timestamp2 = timestamp2 / 1000;
- //2014-07-10 10:21:12的时间戳为:1404958872
- console.log(stringTime + "的时间戳为:" + timestamp2);
- // 将当前时间换成时间格式字符串
- var timestamp3 = 1403058804;
- var newDate = new Date();
- newDate.setTime(timestamp3 * 1000);
- // Wed Jun 18 2014
- console.log(newDate.toDateString());
- // Wed, 18 Jun 2014 02:33:24 GMT
- console.log(newDate.toGMTString());
- // 2014-06-18T02:33:24.000Z
- console.log(newDate.toISOString());
- // 2014-06-18T02:33:24.000Z
- console.log(newDate.toJSON());
- // 2014年6月18日
- console.log(newDate.toLocaleDateString());
- // 2014年6月18日 上午10:33:24
- console.log(newDate.toLocaleString());
- // 上午10:33:24
- console.log(newDate.toLocaleTimeString());
- // Wed Jun 18 2014 10:33:24 GMT+0800 (中国标准时间)
- console.log(newDate.toString());
- // 10:33:24 GMT+0800 (中国标准时间)
- console.log(newDate.toTimeString());
- // Wed, 18 Jun 2014 02:33:24 GMT
- console.log(newDate.toUTCString());
- Date.prototype.format = function(format) {
- var date = {
- "M+": this.getMonth() + 1,
- "d+": this.getDate(),
- "h+": this.getHours(),
- "m+": this.getMinutes(),
- "s+": this.getSeconds(),
- "q+": Math.floor((this.getMonth() + 3) / 3),
- "S+": this.getMilliseconds()
- };
- if (/(y+)/i.test(format)) {
- format = format.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length));
- }
- for (var k in date) {
- if (new RegExp("(" + k + ")").test(format)) {
- format = format.replace(RegExp.$1, RegExp.$1.length == 1
- ? date[k] : ("00" + date[k]).substr(("" + date[k]).length));
- }
- }
- return format;
- }
- console.log(newDate.format('yyyy-MM-dd h:m:s'));
- </script>
- //第一种
- GetLength = function(str)
- {
- var realLength = 0;
- for (var i = 0; i < str.length; i++)
- {
- charCode = str.charCodeAt(i);
- if (charCode >= 0 && charCode <= 128)
- realLength += 1;
- else
- realLength += 2;
- }
- return realLength;
- }
- //第二种(采取将255意外的字符替换成"aa"的做法,取长度)
- GetLength = function(str)
- {
- return str.replace(/[^\x00-\xff]/g,"aa").length;
- };
- //第三种
- GetLength = function(s)
- {
- var len = 0;
- for(var i=0; i<s.length; i++)
- {
- var c = s.substr(i,1);
- var ts = escape(c);
- if(ts.substring(0,2) == "%u")
- {
- len+=2;
- } else
- {
- len+=1;
- }
- }
- return len;
- }
- var time;
- pauseMp3() {
- console.log(time);
- clearInterval(time);
- },
- timePlay(data) {
- var i = 0;
- var that = this; //作用域的原因,在定时器中,this变化
- time = setInterval(function() {
- if(i >= data.length) {
- clearInterval(time);
- return false;
- }
- that.playMp3(data[i].attachment_en);
- i++;
- }, 3000);
- },
- <script>
- //setTimeout 1000ms后执行1次
- var i = setTimeout(function(){
- },1000);
- //setInterval 每隔1000ms执行一次
- var j = setInterval(function(){
- },1000)
- //清除Timeout的定时器,传入id(创建定时器时会返回一个id)
- clearTimeout(i);
- //清除Interval的定时器,传入id(创建定时器时会返回一个id)
- clearInterval(j);
- </script>
优化后:(vue.js)
- var timers; /* 定时器变量,用于停止定时器使用 */
- var playNum = 0; /* 定时器暂停的位置,用于继续使用 */
- /*传data播放数组连续播放,第二个参数为true表示播放两个文件*/
- timePlay(dataObj, mode) {
- if(!dataObj) {
- this.$toast({
- message: "获取阅读文件失败,请刷新重试",
- duration: 1000
- });
- }
- this.playData = dataObj;
- var i = playNum ? playNum : 0;
- var that = this; //作用域的原因,在定时器中,this变化
- timers = setInterval(function() {
- if(i >= dataObj.length) {
- playNum = 0;
- clearInterval(timers);
- return false;
- }
- /*先读中文,再读英文*/
- if(mode == 1) {
- that.playMp3(dataObj[i].attachment_zh, dataObj[i].attachment_en);
- } else if(mode == 2) {
- } else {
- that.playMp3(dataObj[i].attachment_en);
- };
- playNum++;
- i++;
- }, 4000);
- },
- /*控制播放 停止和继续*/
- controlPlay() {
- if(timers) {
- this.pauseMp3();
- if(this.playBtnType5Msg == "暂停") {
- this.playBtnType5Msg = "继续";
- this.pauseMp3();
- } else {
- this.playBtnType5Msg = "暂停";
- this.timePlay(this.playData);
- }
- } else {
- this.$toast({
- message: "请先选择一种播放模式",
- duration: 1000
- });
- }
- },
- /*中断正在播放的音频,中断定时器*/
- pauseMp3() {
- clearInterval(timers);
- },
- playMp3(url1, url2) {
- var audio = document.createElement("audio");
- audio.src = url1;
- audio.play();
- if(url2) {
- setTimeout(function() {
- audio.src = url2;
- audio.play();
- }, 1500)
- }
- },
- endTimeEvent(event) {
- event.stopPropagation();//停止事件冒泡
- },
比如一串这样的字符串
11,22,33,44,55,66,
最后一个逗号可能有可能没有,判断最后一个是否逗号如果是就去掉这个逗号,如果不是逗号则不操作
- let link = "http://localhost:8080/test/?";
- let linkEndString = link.charAt(link.length-1);
- if(linkEndString == '?'){
- link=link.substring(0,link.length-1)
- }
拓展:
1、获取字符串最后一位
方法一: 运用String对象下的charAt方法
charAt() 方法可返回指定位置的字符。
代码如下:
str.charAt(str.length-1)
方法二: 运用String对象下的substr方法
substr() 方法可在字符串中抽取从start下标开始的指定数目的字符。
str.substr(start[, length]),其中start为必选参数,表示坐标开始的位置,正值则正向数数,负值则反向数数,length为可选参数,表示从开始位置数几个数。
代码如下:
str.substr(str.length-1,1)
方法三: 运用String对象下的split方法
split() 方法用于把一个字符串分割成字符串数组。
代码如下:
var str = “Bastian″;
arr= str.split(“ ”);
arr[arr.length-1];
方法四: 运用正则
2、判断字符串是否以指定字符串开始或结尾
判断是否以指定字符串开始用startsWith,结尾用endsWith
function confirmEnding(str, target) {
if(str.endsWith(target)){
return true;
}
return false;
}
confirmEnding("Bastian", "n");
该例子说明的是如果字符串以给定的target结尾,则返回true,否则返回false。
- <iframe scrolling="yes" frameborder="0" src="/admin/index.php?r=invest%2Fcontract-pay%2Fpay-list&cid=17" width="100%" onload="setIframeHeight(this)"></iframe>
- <script>
- // iframe自适应高度
- function setIframeHeight(iframe) {
- if (iframe) {
- var iframeiframeWin = iframe.contentWindow || iframe.contentDocument.parentWindow;
- if (iframeWin.document.body) {
- iframe.height = iframeWin.document.documentElement.scrollHeight || iframeWin.document.body.scrollHeight;
- }
- }
- }
- </script>
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title>js中常用追加元素的几种方法</title>
- <link rel="stylesheet" href="css/rest.css" />
- <style>
- .container {
- width: 1200px;
- padding: 10px;
- margin: 50px auto;
- border: 1px solid lightcoral;
- }
- #wrap{
- border: 1px solid lightseagreen;
- }
- .container p{
- height: 30px;
- line-height: 30px;
- }
- .btn-group{
- margin-top: 20px;
- }
- button{
- width: 80px;
- height: 32px;
- margin-right: 10px;
- line-height: 32px;
- text-align: center;
- border: 0px;
- }
- </style>
- </head>
- <body>
- <div class="container">
- <div id="wrap">
- <p class="first">我是第一个子元素</p>
- <p class="second">我是第二个子元素</p>
- </div>
- <div class="btn-group">
- <button class="append">append</button>
- <button class="appendTo">appendTo</button>
- <button class="prepend">prepend</button>
- <button class="prependTo">prependTo</button>
- <button class="after">after</button>
- <button class="before">before</button>
- <button class="appendChild" onclick="appChild()">appendChild</button>
- <button class="insertAfter">insertAfter</button>
- <button class="insertBefore">insertBefore</button>
- </div>
- </div>
- </body>
- </html>
- <script src="js/jquery-1.9.1.min.js"></script>
- <script>
- $(function(){
- //append(),在父级最后追加一个子元素
- $(".append").click(function(){
- $("#wrap").append("<p class='three'>我是子元素append</p>");
- });
- //appendTo(),将子元素追加到父级的最后
- $(".appendTo").click(function(){
- $("<p class='three'>我是子元素appendTo</p>").appendTo($("#wrap"));
- });
- //prepend(),在父级最前面追加一个子元素
- $(".prepend").click(function(){
- $("#wrap").prepend("<p class='three'>我是子元素prepend</p>");
- });
- //prependTo(),将子元素追加到父级的最前面
- $(".prependTo").click(function(){
- $("<p class='three'>我是子元素prependTo</p>").prependTo($("#wrap"));
- });
- //after(),在当前元素之后追加(是同级关系)
- $(".after").click(function(){
- $("#wrap").after("<p class='siblings'>我是同级元素after</p>");
- });
- //before(),在当前元素之前追加(是同级关系)
- $(".before").click(function(){
- $("#wrap").before("<p class='siblings'>我是同级元素before</p>");
- });
- //insertAfter(),将元素追加到指定对象的后面(是同级关系)
- $(".insertAfter").click(function(){
- $("<p class='three'>我是同级元素insertAfter</p>").insertAfter($("#wrap"));
- });
- //insertBefore(),将元素追加到指定对象的前面(是同级关系)
- $(".insertBefore").click(function(){
- $("<p class='three'>我是同级元素insertBefore</p>").insertBefore($("#wrap"));
- });
- });
- //appendChild(),在节点的最后追加子元素
- function appChild(){
- // 创建p节点
- var para=document.createElement("p");
- // 创建文本节点
- var node=document.createTextNode("我是子集appendChild新段落。");
- // 把文本节点添加到p节点里
- para.appendChild(node);
- // 查找div1
- var element=document.getElementById("wrap");
- // 把p节点添加到div1里
- element.appendChild(para);
- }
- </script>
- /**
- * 获取当前url的指定参数值
- * @param name
- * @returns {string|null}
- */
- function getQueryString(name) {
- var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
- var r = window.location.search.substr(1).match(reg);
- if (r != null) return decodeURI(r[2]); return null;
- }
- /**
- * 替换当前Url中指定参数值,如果没有就加上
- * @param find
- * @param value
- * @returns {string}
- */
- function replaceQueryStringParam(find,value) {
- let base = window.location.href;
- console.log(base)
- let offset = base.indexOf(find);
- let index;
- let rr = '';
- if(offset < 0){
- if(base.indexOf('?') < 0) {
- base += '?';
- }else{
- base += '&';
- }
- base += find + '=' + value;
- }else{
- left = base.substr(0, offset);
- right = base.substr(offset);
- index = right.indexOf('&');
- if(index >= 0){
- rr = right.substr(index);
- }
- base = left + find + "=" + value + rr;
- }
- return base;
- }
- function detectDeviceType() {
- var ua = navigator.userAgent;
- var isMobile = /mobile|tablet|ip(ad|od)|android/i.test(ua);
- if (isMobile) {
- console.log("当前为移动端");
- } else {
- console.log("当前为PC浏览器端");
- }
- }
- // 调用示例
- detectDeviceType();
- function isWeiXin() {
- var ua = window.navigator.userAgent.toLowerCase();
- if (ua.match(/MicroMessenger/i) == 'micromessenger') {
- return true;
- } else {
- return false;
- }
- }
- // 调用示例
- if (isWeiXin()) {
- console.log("当前为微信浏览器");
- } else {
- console.log("当前非微信浏览器");
- }
- // 签名算法
- sign : function (data) {
- if(data.sign){
- delete data.sign;
- }
- if(data.apikey){
- delete data.apikey;
- }
- const params = {
- ...data
- // apikey: GraceRequestConfig.apiKey
- }
- const apiKey = GraceRequestConfig.apiKey
- // 1. 获取对象的键并按 ASCII 从小到大排序
- const sortedKeys = Object.keys(params).sort();
- // 2. 按照 `key=value` 的格式拼接并用 `&` 连接
- const sortedString = sortedKeys.map(key => `${key}=${params[key]}`).join('&');
- // 3. 将 apiKey 追加到拼接字符串的末尾
- const finalString = apiKey ? `${sortedString}&apikey=${apiKey}` : sortedString;
- // 4. 对拼接后的字符串进行 MD5 加密并转换为大写
- const md5Hash = md5.md5(finalString).toUpperCase(); // 小写是toLowerCase();
- // console.log('finalString', finalString)
- // console.log('md5Hash', md5Hash)
- data.sign = md5Hash;
- return data;
- },