编写一个方法 求一个字符串的字节长度 一个英文字符占用一个字节,一个中文字符占用两个字节 一个文字等于两个字符 function getByte(str) { var num = 0; for (var i = 0, l = str.length; i < l; i++) { if (str.charCodeAt(i) > 255) { num += 2; } else { num++; } } return num; }
<script type="text/javascript"> function trim(str){ //删除左右两端的空格 return str.replace(/(^\s*)|(\s*$)/g, ""); } function ltrim(str){ //删除左边的空格 return str.replace(/(^\s*)/g,""); } function rtrim(str){ //删除右边的空格 return str.replace(/(\s*$)/g,""); } </script>
javascript控制页面控件隐藏显示的两种方法,方法的不同之处在于控件隐藏后是否还在页面上占位
方法一:
document.all["PanelSMS"].style.visibility="hidden";
document.all["PanelSMS"].style.visibility="visible";
方法二:
document.all["PanelSMS"].style.display="none";
document.all["PanelSMS"].style.display="inline";
方法一隐藏后 页面的位置还被控件占用 只是不显示 类似于.net验证控件的Display=Static
方法二隐藏后 页面的位置不被占用 类似于.net验证控件的Display=Dynamic
<script language="javascript" type="text/javascript">
alert("hello\nworld");<!-- 通过转义字符
// -->
</script>
IE有children,FF没有;IE有parentElement,FF没有;IE有innerText,outerText,outerHTML,FF没有;
FF有HTMLElement,HTMLDivElement,XMLDocument,DocumentFragment,Node,Event,Element等等,
IE没有;IE有数据岛,FF没有;IE跟FF创建HttpRequest实例的方法不一样。。等等。。
延时时间/交互时间是以豪秒为单位的(1000ms=1s)
setTimeout 在执行时,是在载入后延迟指定时间后,去执行一次表达式,仅执行一次
SetInterva 在执行时,它从载入后,每隔指定的时间就执行一次表达式
1)基本用法:
执行一段代码:
var i=0;
setTimeout("i+=1;alert(i)",1000);
执行一个函数:
var i=0;
setTimeout(function(){i+=1;alert(i);},1000);
下面再来一个执行函数的:
var i=0;
function test(){
i+=1;
alert(i);
}
setTimeout("test()",1000);
也可以这样:
setTimeout(test,1000);
2)<script type="text/javascript">
<!--
function sett()
{
document.body.innerHTML=Math.random();
}
setInterval("sett();", 500);
// -->
</script>
<script language="javascript" type="text/javascript"> Array.prototype.strip=function() { if(this.length<2) return [this[0]]||[]; var arr=[]; for(var i=0;i<this.length;i++) { arr.push(this.splice(i--,1)); for(var j=0;j<this.length;j++) { if(this[j]==arr[arr.length-1]) { this.splice(j--,1); } } } return arr; } var arr=["abc",85,"abc",85,8,8,1,2,5,4,7,8]; alert(arr.strip()); </script>
<html> <head><title>loading</title></head> <body> <div id="load">数据正在加载......</div> <script type="text/javascript"> var Browser={ /** Browser对象用于检测浏览器,其中用到了IE的条件编译 */ /*@cc_on isIE:true, @*/ isFF:window.navigator.appName.toUpperCase().indexOf("NETSCAPE")!=-1?true:false, isOpera:window.navigator.appName.toUpperCase().indexOf("OPERA")!=-1?true:false }; Function.prototype.bind=function(object) { var _this=this; return function() { _this.apply(object,arguments); } } function HttpRequest() { this.async=true; this.cache=false; this.xmlhttp=function() { if(Browser.isFF&&window.XMLHttpRequest) { try{ return new XMLHttpRequest(); }catch(e){} } else if(Browser.isIE&&window.ActiveXObject) { var Version = [ "Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0", "Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP.2.6","Msxml2.XMLHTTP", "Microsoft.XMLHTTP.1.0","Microsoft.XMLHTTP.1","Microsoft.XMLHTTP" ]; for(var i=0;i<Version.length;i++) { try{ return new ActiveXObject(Version[i]); }catch(e){} } } }()||false; } HttpRequest.prototype={ send:function(object,url,callback) { if(!this.xmlhttp) return; this.xmlhttp.open(object?"post":"get",url,!!this.async); if(object) this.xmlhttp.setRequestHeader("content-type","application/x-www-form-urlencoded"); if(!this.cache) { this.xmlhttp.setRequestHeader("No-Cache","1"); this.xmlhttp.setRequestHeader("Pragma","no-cache"); this.xmlhttp.setRequestHeader("Cache-Control","no-cache"); this.xmlhttp.setRequestHeader("Expire","0"); this.xmlhttp.setRequestHeader("Last-Modified","Wed, 1 Jan 1997 00:00:00 GMT"); this.xmlhttp.setRequestHeader("If-Modified-Since","-1"); } if(!this.callback) this.callback=callback; if(!this.async) { if(typeof(this.callback)=="string") { eval(this.callback); } else if(typeof(this.callback)=="function") { this.callback(this.xmlhttp); } } else { this.xmlhttp.onreadystatechange=function() { if(this.xmlhttp.readyState==4) { if(this.xmlhttp.status==0||this.xmlhttp.status==200) { if(typeof(this.callback)=="string") { eval(this.callback); } else if(typeof(this.callback)=="function") { this.callback(this.xmlhttp); } } } }.bind(this); } this.xmlhttp.send(object); }, abort:function() { if(this.xmlhttp&&this.xmlhttp.abort) this.xmlhttp.abort(); } }; //ajax类定义结束 new HttpRequest().send(null,"http://bbs.51js.com/index.php", function(r) { document.getElementById("load").innerHTML=r.responseText.match(/<img.*?(?:\/)?>/img).join(""); }); </script> </body> </html>
这是我写注册表单时用到的代码 <!-- function showCustomer(name){ var xmlhttp; try{ xmlhttp= new ActiveXObject('Msxml2.XMLHTTP'); }catch(e){ try{ xmlhttp= new ActiveXObject('Microsoft.XMLHTTP'); }catch(e){ try{ xmlhttp= new XMLHttpRequest(); }catch(e){} } } xmlhttp.open("get","checkNewUser?username="+name+"&"+ new Date().getTime()); xmlhttp.onreadystatechange=function(){ if (xmlhttp.readyState==4){ if(xmlhttp.status==200){ //根据responseText判断用户名是否存在 if(xmlhttp.responseText=="2"){ alert("对不起,用户名不能为空!"); document.getElementById("spanUser").innerHTML='<font color=red >重新输入用户名</font>'; document.all.sum.value="0";//向隐藏域写值,以便于提交时判断用户名是否在存在提示下进行了修改 } else if(xmlhttp.responseText=="1"){ alert("对不起,用户名已经存在!"); document.getElementById("spanUser").innerHTML='<font color=red >此用户已存在</font>'; document.all.sum.value="0";//向隐藏域写值,以便于提交时判断用户名是否在存在提示下进行了修改 } else{ alert("恭喜,该用户未被注册!"); document.getElementById("spanUser").innerHTML='<font color=red >用户名可以使用</font>'; document.all.sum.value="1"; } }} // else {alert("网络链接失败!");} } xmlhttp.send(null); }
a = 1 a.prop = 3
alert(a + a.prop) // NAN
变量a为数字3,给其添加prop属性,值为4(奇怪吧在JS中这是允许的,且不会有语法错误)。
然后alert出a+a.prop的结果。结果是NaN。a.prop为undefined,3+undefined为NAN。
举一反三,给字符串添加属性
a = "a"
a.prop = "d"
alert(a + a.prop) // aundefined
var a = 1
function func() {
a = b = 2
}
func()
alert(a)
alert(b) // 2 2
JS中不用var声明的变量默认是全局变量,而这里的连等使的情况更加隐蔽。这里的b是全局的,因此func外可以访问。