1.<input id="b" οnkeyup="document.getElementById('b').value=this.value.replace(/./g,'*');" /> 输入密码用星号代替 还是有问题,中文输入法下面回车输入英文在谷歌浏览器中还是没有变化 最好用type="password" 原点代替
2.js检测网络:
<script>
var times = 15*60*1000;
var myTime = setTimeout("Timeout()", times);
function resetTime() {
clearTimeout(myTime);
myTime = setTimeout('Timeout()', times);
}
function Timeout() {
//alert("您的登录已超时, 请点确定后重新登录!");
document.location.href=proto+"//"+ip+"/cgi-bin/login.html";
}
document.documentElement.οnkeydοwn=resetTime;
//document.doocumentElement.οnclick=resetTime;
setInterval(function(){
if(window.navigator.onLine==true) {
// alert("首次 -- 已连接");
}else {
// alert("首次 -- 未连接");
}
//clearInterval();
window.addEventListener("online", online, false);
window.addEventListener("offline", offline, false);
function online() { document.location.href=proto+"//"+ip+"/cgi-bin/login.html"; }
function offline() { alert($.i18n.map._nonetwork); clearInterval(); }
},1000);
</script>
3.js比较两个数组是否相等
(1).利用toString方法,比较。例如: var a = [1,2,3]; var b = [1,2,3]; alert(a.sort().toString() == b.sort().toString()); 结果为true
(2).用for循环(一个一个比)
for(var i=0;i<a.length;i++){if(a[0]==b[0]){ ......}}
4.js 获取字符串位置
(1)charAt()获取字符串指定位置的字符 str.charAt(index)
(2)indexOf()返回某个指定的字符串在字符串中首次出现的位置 str.indexOf(sstr,index),sstr表示指定的字符串,index可有可无,表示指定开始匹配字符串的位置,省略表示从位置0开始
(3)获取一个字符串在指定字符串第n次出现的位置
str:字符串;cha:要查找的字符串值;num:要查找第几个改字符串值(从0开始);
function find(str,cha,num){
var x=str.indexOf(cha);
for(var i=0;i<num;i++){
x=str.indexOf(cha,x+1);
}
return x;
}
调用:var str ="hello world" find(str,'o',1)//返回7 find(str,'o',0)//返回4
5.匹配字符串中的ip地址,并用;连接
var dns_value = "";
var rs=DNSServer.match(/(\d+)\.(\d+)\.(\d+)\.(\d+)/g);
if(rs.length){
dns_value = rs.join(";");
}
6.span标签超出文字自动换行:word-wrap : break-word ;超出自动换行 中文不换行:white-space:nowrap;
word-break:break-all;只对英文起作用,以字母作为换行依据
word-wrap:break-word; 只对英文起作用,以单词作为换行依据 word-break:break-word 英文单词换行
white-space:pre-wrap; 只对中文起作用,强制换行
white-space:nowrap; 强制不换行,都起作用
white-space:nowrap; overflow:hidden; text-overflow:ellipsis;不换行,超出部分隐藏且以省略号形式出现(部分浏览器支持)
(以上需要设置宽度.)
7.复选框和文本不对齐,vertical-align:middle;复选框和文本都需要写
8.js 求对数
计算 lg(XXX) 即 log(10)^XXX 即 Math.log(XXX)/Math.log(10)
9.清除缓存
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=8">
<meta http-equiv="Expires" content="0">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-control" content="no-cache">
<meta http-equiv="Cache" content="no-cache">
Cache-control头部如下:
值可以是public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age各个消息中的指令含义如下:Public指示响应可被任何缓存区缓存。 Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。 no-cache指示请求或响应消息不能缓存 no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。 max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。 min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。 max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。
Last-Modified/If-Modified-Since:
Last-Modified/If-Modified-Since要配合Cache-Control使用。Last-Modified:标示这个响应资源的最后修改时间。web服务器在响应请求时,告诉浏览器资源的最后修改时间。 If-Modified-Since:当资源过期时(使用Cache-Control标识的max-age),发现资源具有Last-Modified声明,则再次向web服务器请求时带上头 If-Modified-Since,表示请求时间。web服务器收到请求后发现有头If-Modified-Since 则与被请求资源的最后修改时间进行比对。若最后修改时间较新,说明资源又被改动过,则响应整片资源内容(写在响应消息包体内),HTTP 200;若最后修改时间较旧,说明资源无新修改,则响应HTTP 304 (无需包体,节省浏览),告知浏览器继续使用所保存的cache。
Etag/If-None-Match
Etag/If-None-Match也要配合Cache-Control使用。Etag:web服务器响应请求时,告诉浏览器当前资源在服务器的唯一标识(生成规则由服务器决定)。Apache中,ETag的值,默认是对文件的索引节(INode),大小(Size)和最后修改时间(MTime)进行Hash后得到的。 If-None-Match:当资源过期时(使用Cache-Control标识的max-age),发现资源具有Etage声明,则再次向web服务器请求时带上头If-None-Match (Etag的值)。web服务器收到请求后发现有头If-None-Match 则与被请求资源的相应校验串进行比对,决定返回200或304。
Etag的出现主要是为了解决几个比较难解决的问题:
Last-Modified标注的最后修改只能精确到秒级,如果某些文件在1秒钟以内,被修改多次的话,它将不能准确标注文件的修改时间如果某些文件会被定期生成,当有时内容并没有任何变化,但Last-Modified却改变了,导致文件没法使用缓存有可能存在服务器没有准确获取文件修改时间,或者与代理服务器时间不一致等情形Etag是服务器自动生成或者由开发者生成的对应资源在服务器端的唯一标识符,能够更加准确的控制缓存。Last-Modified与ETag是可以一起使用的,服务器会优先验证ETag,一致的情况下,才会继续比对Last-Modified,最后才决定是否返回304
浏览器总是优先使用cache-control,如果没有cache-control才考虑Expires
浏览器缓存的几个区别:
在浏览器上点击刷新按钮、按Ctrl+F5刷新和输入网址后按回车键,使用的是不同的缓存机制,具体如下:按刷新按钮:需要到服务器检查页面对象是否过期,不过期则使用缓存; 按Ctrl+F5:强制刷新,不使用缓存,请求头中会有no-cache标签; 输入网址后按回车:如果本地缓存存在并未过期,则直接使用而无需请求服务器
10,定时器产生1-9随机数 且连续不能相同
<input type="button" οnclick="tm=window.clearInterval(tm)" value="stop" >
var first = Math.floor(Math.random()*9 + 1);
var tm = setInterval(function(){
console.log("first:"+first);
var sec = Math.floor(Math.random()*9 + 1);
console.log("sec"+sec);
while(first == sec){
console.log("same:"+first+":"+sec)
sec = Math.floor(Math.random()*9 + 1);
console.log("same:"+sec)
}
console.log("nosame:"+first);
first = sec;
},500)
//Math.random() = 0-1(包括0不包括1),Math.floor是向下取整,Math.ceil是向上取整,Math.round是四舍五入
11.判断一个字符串是否是日期格式
var reg1 =/^(\d{4})-(\d{2})-(\d{2})$/;
var str = document.getElementById("defaultSysTime").value;
if(!reg1.test(str))
{
return alerterror($.i18n.map._defaultSysTime +" "+ $.i18n.map._FormatError, "defaultSysTime");
}
if(isNaN(str)&&!isNaN(Date.parse(str))){
var time = new Date('2000-01-01').getTime();
var time1 = new Date(str).getTime();
// console.log(time)
// console.log(time1)
if(time1 < time){
return alerterror($.i18n.map._defaultSysTime +" "+ $.i18n.map._NumberRangeError, "defaultSysTime");
}
}else{
return alerterror($.i18n.map._defaultSysTime +" "+ $.i18n.map._FormatError, "defaultSysTime");
}
12.js去除空格 把字符串按照没两个加空格的方式组合一起下发
var now_KEY_nospace = now_KEY.replace(/\s/g,'');
console.log(now_KEY_nospace)
//如需要对去除空格后的再进一步去除非数字字符,则用下面一行;
// var new_KEY = now_KEY_nospace.replace(/\D+/g,'').replace(/(\d{2})/g,'$1 ').trim();
var new_KEY = now_KEY_nospace.replace(/([0-9a-zA-Z]{2})/g,'$1 ').trim();
console.log(new_KEY);
//trim是去除头尾空格 重新加空格之后可能导致末尾有多余空格 需要去除
$1:配合()使用,选择第一个()
13.正则匹配三段4-5位的数字逗号分开 eg:2101,12,129
var reg1 = /^([0-9]{4,5})([\,][0-9]{4,5}){0,2}$/;
if(!reg1.test(str)){alert("格式不对!")}
14.JS正则截取首尾单双引号中间内容
var testStr="\"dsad'''''\"asdsadf\"";
var reg = /^["|'](.*)["|']$/g;
testStr.replace(reg,"$1");
attrvalue = attrvalue.replace(/^["](.*)["]$/g,"$1"); 首尾双引号之间的内容
attrvalue = attrvalue.replace(/\"/g, "");清空所有双引号