<input type="text" id="myText" value="input text"> Code
function Obj(){this.value="对象Q?;}
var value="global 变量";
function Fun1(){alert(this.value);}
window.Fun1(); //global 变量
Fun1.call(window); //global 变量
Fun1.call(document.getElementById('myText')); //input text
Fun1.call(new Obj()); //对象Q?/div>
Js代码
Code
复制代码 代码如下:
var first_object = { num: 42 }; var second_object = { num: 24 }; function multiply(mult) { return this.num * mult; } multiply.call(first_object, 5); // returns 42 * 5 multiply.call(second_object, 5); // returns 24 * 5
二、applyҎ applyҎ的第一个参C是要传入l当前对象的对象Q即函数内部的this。后面的参数都是传递给当前对象的参数?
对于apply和call两者在作用上是相同的,但两者在参数上有区别的。对于第一个参数意义都一P但对W二个参敎ͼapply传入的是一个参数数l,也就是将多个参数l合成ؓ一个数l传入,而call则作为call的参C入(从第二个参数开始)?
?func.call(func1,var1,var2,var3)对应的apply写法为:func.apply(func1,[var1,var2,var3])同时使用apply的好处是可以直接当前函数的arguments对象作ؓapply的第二个参数传入?
Js代码
复制代码 代码如下:
var func=new function(){this.a="func"} var myfunc=function(x,y){ var a="myfunc"; alert(this.a); alert(x + y); } myfunc.call(func,"var"," fun");// "func" "var fun" myfunc.apply(func,["var"," fun"]);// "func" "var fun"
三、caller 属? q回一个对函数的引用,卌用了当前函数的函C?
functionName.caller :functionName 对象是所执行函数的名U?
说明:
对于函数来说Qcaller 属性只有在函数执行时才有定义?如果函数是由 JScript E序的顶层调用的Q那?caller 包含的就?null 。如果在字符串上下文中?caller 属性,那么l果?functionName.toString 一P也就是说Q显C的是函数的反编译文本?
Js代码
复制代码 代码如下:
function CallLevel(){ if (CallLevel.caller == null) alert("CallLevel was called from the top level."); else alert("CallLevel was called by another function:\n"+CallLevel.caller); } function funCaller(){ CallLevel(); } CallLevel(); funCaller()
四、callee属? q回正被执行?Function 对象Q也是所指定?Function 对象的正文?
[function.]arguments.callee:可选项 function 参数是当前正在执行的 Function 对象的名U?
说明:
callee 属性的初始值就是正被执行的 Function 对象?
callee 属性是 arguments 对象的一个成员,它表C对函数对象本n的引用,q有利于?
函数的递归或者保证函数的装性,例如下边CZ的递归计算1到n的自然数之和。而该属?
仅当相关函数正在执行时才可用。还有需要注意的是callee拥有length属性,q个属性有?
用于验证q是比较好的。arguments.length是实参长度,arguments.callee.length?
形参长度Q由此可以判断调用时形参长度是否和实参长度一致?
Js代码
复制代码 代码如下:
//callee可以打印其本w? function calleeDemo() { alert(arguments.callee); } //用于验证参数 function calleeLengthDemo(arg1, arg2) { if (arguments.length==arguments.callee.length) { window.alert("验证形参和实参长度正!"); return; } else { alert("实参长度Q? +arguments.length); alert("形参长度Q?" +arguments.callee.length); } } //递归计算 var sum = function(n){ if (n <= 0) return 1; else return n Qarguments.callee(n - 1) }
五、bind Js代码
复制代码 代码如下:
var first_object = { num: 42 }; var second_object = { num: 24 }; function multiply(mult) { return this.num * mult; } Function.prototype.bind = function(obj) { var method = this, temp = function() { return method.apply(obj, arguments); }; return temp; } var first_multiply = multiply.bind(first_object); first_multiply(5); // returns 42 * 5 var second_multiply = multiply.bind(second_object); second_multiply(5); // returns 24 * 5
六、JS闭包(Closure) 所谓“闭包”,指的是一个拥有许多变量和l定了这些变量的环境的表辑ּQ通常是一个函敎ͼQ因而这些变量也是该表达式的一部分?
关于闭包Q最单的描述是 ECMAScript 允许使用内部函数Q-卛_数定义和函数表达式位于另一个函数的函数体内。而且Q这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数。当其中一个这L内部函数在包含它们的外部函数之外被调用时Q就会Ş成闭包。也是_内部函数会在外部函数q回后被执行。而当q个内部函数执行Ӟ它仍然必需讉K其外部函数的局部变量、参C及其他内部函数。这些局部变量、参数和函数声明Q最初时Q的值是外部函数q回时的|但也会受到内部函数的影响?
而言之,闭包的作用就是在out function执行完ƈq回后,闭包使得Javascript的垃圑֛收机制GC不会收回out function所占用的资源,因ؓout function的内部函数inner function的执行需要依赖out function中的变量?
闭包的两个特点:
1、作Z个函数变量的一个引?- 当函数返回时Q其处于Ȁzȝ态?
2、一个闭包就是当一个函数返回时Q一个没有释放资源的栈区?
?Q?
Html代码
复制代码 代码如下:
<script type="text/javascript"> function setupSomeGlobals() { // Local variable that ends up within closure var num = 666; // Store some references to functions as global variables gAlertNumber = function() { alert(num); } gIncreaseNumber = function() { num++; } gSetNumber = function(x) { num = x; } } </script> <button onclick="setupSomeGlobals()">生成 - setupSomeGlobals()</button> <button onclick="gAlertNumber()">输出?- gAlertNumber()</button> <button onclick="gIncreaseNumber()">增加 - gIncreaseNumber()</button> <button onclick="gSetNumber(5)">赋? - gSetNumber(5)</button>
?Q?
Html代码
复制代码 代码如下:
<script type="text/javascript"> function newClosure(someNum, someRef) { // Local variables that end up within closure var num = someNum; var anArray = [1,2,3]; var ref = someRef; return function(x) { num += x; anArray.push(num); alert('num: ' + num + ' nanArray ' + anArray.toString() + ' nref.someVar ' + ref.someVar); } } var closure1 = newClosure(40, {someVar:' never-online'}) var closure2 = newClosure(99, {someVar:' BlueDestiny'}) closure1(4) closure2(3) </script>
?Q?
Js代码
复制代码 代码如下:
<script language="javascript"> /* 声明一个全局变量 - getImgInPositionedDivHtml - q将一ơ调用一个外部函数表辑ּq回的内部函数赋l它? q个内部函数会返回一个用于表C绝对定位的 DIV 元素包围着一?IMG 元素 ?HTML 字符Ԍq样一来, 所有可变的属性值都p用该函数时的参数提供Q? */ var getImgInPositionedDivHtml = (function(){ /* 外部函数表达式的局部变?- buffAr - 保存着~冲数组。这个数l只会被创徏一ơ,生成的数l实例对内部函数而言永远是可用的 因此Q可供每ơ调用这个内部函数时使用? 其中的空字符串用作数据占位符Q相应的数据 由内部函数插入到这个数l中Q? */ var buffAr = [ '<div id="', '', //index 1, DIV ID 属? '" style="position:absolute;top:', '', //index 3, DIV 剙位置 'px;left:', '', //index 5, DIV 左端位置 'px;width:', '', //index 7, DIV 宽度 'px;height:', '', //index 9, DIV 高度 'px;overflow:hidden;\"><img src=\"', '', //index 11, IMG URL '\" width=\"', '', //index 13, IMG 宽度 '\" height=\"', '', //index 15, IMG 调蓄 '\" alt=\"', '', //index 17, IMG alt 文本内容 '\"><\/div>' ]; /* q回作ؓ对函数表辑ּ求值后l果的内部函数对象? q个内部函数是每次调用执行的函? - getImgInPositionedDivHtml( ... ) - */ return (function(url, id, width, height, top, left, altText){ /* 不同的参数插入到缓冲数l相应的位置Q? */ buffAr[1] = id; buffAr[3] = top; buffAr[5] = left; buffAr[13] = (buffAr[7] = width); buffAr[15] = (buffAr[9] = height); buffAr[11] = url; buffAr[17] = altText; /* q回通过使用I字W串Q相当于数l元素连接v来) q接数组每个元素后Ş成的字符Ԍ */ return buffAr.join(''); }); //:内部函数表达式结束? })();//自调? alert(getImgInPositionedDivHtml);//昄q回的函? alert(getImgInPositionedDivHtml("img.gif","img",100,50,0,0,"Test")); </script>
说明Q其中的关键技巧在于通过执行一个单行(in-lineQ函数表辑ּ创徏一个额外的执行环境Q而将该函数表辑ּq回的内部函C为在外部代码中用的函数。此Ӟ~冲数组被定义ؓ函数表达式的一个局部变量。这个函数表辑ּ只需执行一ơ,而数l也只需创徏一ơ,可以供依赖它的函数重复使用?
七、原型链
ECMAScript ?Object cd定义了一个内?[[prototype]] 属性。这个属性不能通过脚本直接讉KQ但在属性访问器解析q程中,则需要用到这个内部[[prototype]] 属性所引用的对象链Q-卛_型链。可以通过一个公q prototype 属性,来对与内部的 [[prototype]] 属性对应的原型对象q行赋值或定义?
?Q?
<script language="javascript">
function NumObject(formalParameter){
this.testNumber = formalParameter;
}
function StrObject(formalParameter){
this.testString = formalParameter;
}
//?NumObjectcȝ实例替换了所有与 StrObjectcȝ实例相关联的原型?
StrObject.prototype =new NumObject(6);
var objRef = new StrObject( "String_Value" );
//当某个属性访问器试d?objectRef 所引用的对象的属性值时Q整个原型链都会被搜索?
//不论是在对象或对象的原型中,d命名属性值的时候只q回首先扑ֈ的属性倹{而当为对象的命名属性赋值时Q如果对象自w不存在该属性则创徏相应的属性?
alert(objRef.testString);//output "String_Value"
alert(objRef.testNumber);//output "6"
alert(objRef.toString);
//StrObject 的实例拥有一个原型链。该链中的第一个对象是在创建后被指定给 StrObject 构造函数的 prototype 属性的 NumObject 的一个实例。NumObject 的实例也有一个原型,即与 Object.prototype 所引用的对象对应的默认?Object 对象的原型。最后, Object.prototype 有一个gؓ null 的原型,因此q条原型铑ֈ此结束?
objRef.testNumber = 3;//对象自n不存在该属性则创徏相应的属?
alert(objRef.testNumber);//自n有了属性,属性访问器不会再进一步搜索原型链
alert(NumObject.prototype.isPrototypeOf(objRef));// output "true"
</script>
]]>
Div样式ȝ http://www.aygfsteel.com/kyleYang/archive/2010/03/19/315869.html飞熊 飞熊 Fri, 19 Mar 2010 01:48:00 GMT http://www.aygfsteel.com/kyleYang/archive/2010/03/19/315869.html http://www.aygfsteel.com/kyleYang/comments/315869.html http://www.aygfsteel.com/kyleYang/archive/2010/03/19/315869.html#Feedback 0 http://www.aygfsteel.com/kyleYang/comments/commentRss/315869.html http://www.aygfsteel.com/kyleYang/services/trackbacks/315869.html 阅读全文 ]]> OpenerQparentQtopQself{窗体属性的比较 http://www.aygfsteel.com/kyleYang/archive/2010/03/18/315795.html飞熊 飞熊 Thu, 18 Mar 2010 07:52:00 GMT http://www.aygfsteel.com/kyleYang/archive/2010/03/18/315795.html http://www.aygfsteel.com/kyleYang/comments/315795.html http://www.aygfsteel.com/kyleYang/archive/2010/03/18/315795.html#Feedback 0 http://www.aygfsteel.com/kyleYang/comments/commentRss/315795.html http://www.aygfsteel.com/kyleYang/services/trackbacks/315795.html 1.OpenerQ获取创建本H口的窗口的引用Q不在本H口的对象层ơ体pM
只能在用window.open打开的页面中H口中可以访问到opener属性,而对于用showModalDialog和showModalessDialog弹出的窗口则不能讉K刎ͼ其opener属性引用ؓI?/p>
2.parentQtopQ获取的是对本窗口中对象层次元素的引用,对于用iframe或者frame的较有实际意?br />对于用window.open和showModalDialog以及showModalessDialog打开的窗口而言Q返回的是本H口对象层次的元素引用,对于q种情况QparentQtopQself三者的引用相同Q都是当前的H体自nQ但对于H体中的frame和iframe加蝲的页面元素来_q回的则不相同。parent q回的时包含该iframe的页面窗口引用,top则返回最上层的窗口引用,self当然q回的仍然是自n的引用?br /> 3.selfQwindow都是获取当前面H口自n对象的引?br />每个面自n代码中访问页面自w窗体可以采用self和window来访问到?br /> 4.利用window参数传递和dialogArguments来获取弹出窗口的H口引用 Z能够在用showModalDialog和showModalessDialog弹出H口中引用到弹出H口的引用,我们可以在showModalDialog和showModalessDialog的第二个参数传入windowQ然后再弹出的页面中用dialogArguments来获取刚才传入的windowQ即弹出H口的窗口的引用?br />转蝲Q?a href="/standlww/archive/2009/04/28/267807.html">http://www.aygfsteel.com/standlww/archive/2009/04/28/267807.html
]]> js常用代码 http://www.aygfsteel.com/kyleYang/archive/2010/03/09/314922.html飞熊 飞熊 Tue, 09 Mar 2010 03:07:00 GMT http://www.aygfsteel.com/kyleYang/archive/2010/03/09/314922.html http://www.aygfsteel.com/kyleYang/comments/314922.html http://www.aygfsteel.com/kyleYang/archive/2010/03/09/314922.html#Feedback 0 http://www.aygfsteel.com/kyleYang/comments/commentRss/314922.html http://www.aygfsteel.com/kyleYang/services/trackbacks/314922.html <table border oncontextmenu=return(false)><td>no</table> 可用于Table
2. <body onselectstart="return false"> 取消选取、防?b style="COLOR: black; BACKGROUND-COLOR: #99ff99">复制 javascript 技?/span>
3. onpaste="return false" 不准_脓技?/span>
4. oncopy="return false;" oncut="return false;" 防止复制 的javascirptҎ 5.<noscript>// 止另存?br /> <iframe src="*.htm"></iframe> </noscript>功能Q?b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">止右键、禁选择、禁_脓、禁shift、禁ctrl、禁alt
<script language="JavaScript "> <!-- function key(){ //止 Shift if(event.shiftKey){ window.close(); } //止 Alt if(event.altKey){ window.close(); } //止 Ctrl if(event.ctrlKey){ window.close(); } return false; } document.onkeydown=key; if (window.Event) document.captureEvents(Event.MOUSEUP); function nocontextmenu(){ event.cancelBubble = true event.returnValue = false; return false; } function norightclick(e){ if (window.Event){ if (e.which == 2 || e.which == 3) return false; } else if (event.button == 2 || event.button == 3){ event.cancelBubble = true event.returnValue = false; return false; } } //右?br />document.oncontextmenu = nocontextmenu; // for IE5+ document.onmousedown = norightclick; // for all others //--> </script>
<body onselectstart="return false"; onpaste="return false";> 在JSP标准的语法中Q如果pageEncoding属性存在,那么JSP面的字W编码方式就由pageEncoding军_Q否则就由contentType属性中的charset军_Q如果charset也不存在QJSP面的字W编码方式就采用默认的ISO-8859-1? //d到收藏夹 function AddToFavorite() { if (document.all){ window.external.addFavorite(document.URL,document.title); }else if (window.sidebar){ window.sidebar.addPanel(document.title, document.URL, ""); } } //设ؓ首页 function setHomepage(){ if (document.all){ document.body.style.behavior='url(#default#homepage)'; document.body.setHomePage(document.URL); }else if (window.sidebar){ if(window.netscape){ try{ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); }catch (e){ alert( "该操作被览器拒l,如果惛_用该功能Q请在地址栏内输入 about:config,然后项 signed.applets.codebase_principal_support D为true" ); } } var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components. interfaces.nsIPrefBranch); prefs.setCharPref('browser.startup.homepage',document.URL); } }
]]> JS注意事项 http://www.aygfsteel.com/kyleYang/archive/2010/01/31/311360.html飞熊 飞熊 Sat, 30 Jan 2010 16:25:00 GMT http://www.aygfsteel.com/kyleYang/archive/2010/01/31/311360.html http://www.aygfsteel.com/kyleYang/comments/311360.html http://www.aygfsteel.com/kyleYang/archive/2010/01/31/311360.html#Feedback 0 http://www.aygfsteel.com/kyleYang/comments/commentRss/311360.html http://www.aygfsteel.com/kyleYang/services/trackbacks/311360.html 当一个HTML元素的属性用js改变的时候,都能通过 onpropertychange来捕莗例如一?<input name="text1" id="text1" />对象的value属性被面的脚本修改的时候,onchange无法捕获刎ͼ而onpropertychange却能够捕莗? 也就是说Qonpropertychange事g在用键盘每改变一下文本框的值或用js改变其g会触发一下,而onchange只有在用键盘改变其|然后在失ȝ?onblur)后才触发Q用js改变其g能触?onpropertychange和onchange都不文本框中的实际值有没有变,只要有改的相应操作就可能触发。有时当上面两时间都不能满需求时Q可以考虑只用onblur?br /> IE下,当一个HTML元素的属性改变的时候,都能通过 onpropertychange来捕莗例如一?<input name="text1" id="text1" />对象的value属性被面的脚本修改的时候,onchange无法捕获刎ͼ而onpropertychange却能够捕莗?br />也就是说Qonpropertychange能及时捕获属性值的变化Q而onchange在属性值改变时q必M得当前元素失ȝ?onblur)才可以激z该事gQ?span style="COLOR: red">onpropertychange事g只能在IE下?/span>?img src ="http://www.aygfsteel.com/kyleYang/aggbug/311360.html" width = "1" height = "1" /> ]]> javaScript常用例子 http://www.aygfsteel.com/kyleYang/archive/2010/01/31/311358.html飞熊 飞熊 Sat, 30 Jan 2010 16:19:00 GMT http://www.aygfsteel.com/kyleYang/archive/2010/01/31/311358.html http://www.aygfsteel.com/kyleYang/comments/311358.html http://www.aygfsteel.com/kyleYang/archive/2010/01/31/311358.html#Feedback 0 http://www.aygfsteel.com/kyleYang/comments/commentRss/311358.html http://www.aygfsteel.com/kyleYang/services/trackbacks/311358.html 1.取消按钮按下时的虚线? 在input里添加属性?hideFocus 或?HideFocus=true 2.只读文本框内?/strong> 在input里添加属性?readonly 3.防止退后清I的TEXT文档(可把style内容做做为类引用) <INPUT style=behavior:url(#default#savehistory); type=text id=oPersistInput>4.ENTER键可以让光标Ud下一个输入框 <input onkeydown="if(event.keyCode==13) event.keyCode=9" >5.只能Z?有闪? <input onkeyup="value=value.replace(/[ -~]/g,'')" onkeydown="if(event.keyCode==13) event.keyCode=9">6.只能为数?有闪? <input onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace (/[^\d]/g,''))">7.只能为数?无闪? <input style="ime-mode:disabled" onkeydown="if(event.keyCode==13) event.keyCode=9" onKeyPress="if ((event.keyCode<48 event.keyCode>57)) event.returnValue=false">8.只能输入英文和数?有闪? <input onkeyup="value=value.replace(/[\W]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace( /[^\d]/g,''))">9.屏蔽输入?/strong> <input type="text" name="url" style="ime-mode:disabled" onkeydown="if(event.keyCode==13)event.keyCode=9"> 10. 只能输入 数字Q小数点Q减P-Q?字符(无闪? <input onKeyPress="if (event.keyCode!=46 && event.keyCode!=45 && (event.keyCode<48 event.keyCode>57)) event.returnValue=false"> 11. 只能输入两位数Q三位小?有闪? <input maxlength=9 onkeyup="if(value.match(/^\d{3}$$/)) value=value.replace(value,parseInt(value/10)) ;value=value.replace(/\.\d*\./g,'.')" onKeyPress="if((event.keyCode<48 event.keyCode>57) && event.keyCode!=46 && event.keyCode!=45 value.match(/^\d{3}$$/) /\.\d{3}$$/.test(value)) {event.returnValue=false}" id=text_kfxe name=text_kfxe> 12.只能输入数 <input onpaste="return false" id="amount" style="IME-MODE: disabled; WIDTH: 60px; " onpropertychange="if(isNaN(value)) value=value.substring (0,value.length-1);" maxlength="5" size="14" name="amount" />13.只能输入整数 <input id="amount" style="IME-MODE: disabled; WIDTH: 60px; " onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')" maxlength="5" size="14" name="amount" type="text" /> ]]> javascript定义二维数组的方?/title> http://www.aygfsteel.com/kyleYang/archive/2010/01/22/310524.html飞熊 飞熊 Fri, 22 Jan 2010 07:05:00 GMT http://www.aygfsteel.com/kyleYang/archive/2010/01/22/310524.html http://www.aygfsteel.com/kyleYang/comments/310524.html http://www.aygfsteel.com/kyleYang/archive/2010/01/22/310524.html#Feedback 0 http://www.aygfsteel.com/kyleYang/comments/commentRss/310524.html http://www.aygfsteel.com/kyleYang/services/trackbacks/310524.html W一U办法就是用一l数l来模拟二维数组.感觉q样不是很好,有点ȝ,而且Ҏ出错
W二U办?一l数l的分项又定义ؓ一个一l数l? q种办法看v来似乎不?主要实现Ҏ如下:java script定义二维数组的方法?br />java script本n只支持一l数l, 有时非要用到二维数组的时候, 可以一l数l的分项又定义ؓ一个数l, 二维数组是用数l构成的数组 Var aa=new Array(); //定义一l数l?br />for(i=1;i<=10;i++) { aa[i]=new Array(); //每一个子元素又定义ؓ数组 for(n=0;n<=10;n++) { aa[i][n]=i+n; //此时aa[i][n]可以看作是一个二U数l?br /> } }
]]> Math对象应用详解 http://www.aygfsteel.com/kyleYang/archive/2010/01/22/310523.html飞熊 飞熊 Fri, 22 Jan 2010 07:01:00 GMT http://www.aygfsteel.com/kyleYang/archive/2010/01/22/310523.html http://www.aygfsteel.com/kyleYang/comments/310523.html http://www.aygfsteel.com/kyleYang/archive/2010/01/22/310523.html#Feedback 0 http://www.aygfsteel.com/kyleYang/comments/commentRss/310523.html http://www.aygfsteel.com/kyleYang/services/trackbacks/310523.html JavaScript中的Math对象提供了大量的术q算功能和数值操作方法?/p>
JavaScript中的Math对象的与众不同之处在于,它是一个全局对象。在使用Math对象之前Q既不需要将一个变量声明ؓMath对象Q也不需要定义一个新的Math对象QJavaScript自动地创徏好Math对象Q我们只ȝ接用它卛_。这使得Math对象使用h很容易?/p>
Math对象的属性中包含一些经怋用的数学帔RQ如PI属?卛_周率q似?.141592653589793)。通常情况下,要访问这些属性,只须在Math之后加上一个点?.)Q然后写讉K的属性名。例如,要计一个圆的面U,可以使用如下代码Q?/p>
var radius = prompt("Give the radius of the circle", "");
var area = (Math.PI)*radius*radius;
document.write("The area is " + area);
除加(+)、减(?、乘(*)、除(/) 4个标准算术运外QMath对象q包含一些复杂的数学ҎQ用于完成算术运无法实现的复杂计算Q例如cos()Ҏ用于计算弧度参数的余弦函数。下面将介绍一些常见的数学Ҏ?/p>
1Qabs()Ҏ
abs()Ҏq回所传入参数的绝对倹{实际上Q绝对值就是一个数L正负号之后的数倹{例如,?的绝对值是1Q?的绝对值是4{。对于正敎ͼ其绝对值就是该正数本nQ例如,1的绝对值就??/p>
例如Q下面的代码对?01取绝对|q把l果输出在页面上Q?/p>
var myNumber = -101;
document.write(Math.abs(myNumber));
2Qceil()Ҏ
ceil()Ҏ用于向上取整Q它把一个数值向上舍入到最接近的最整敎ͼ卛_于Math.ceil(n)ҎQ它返回大于或{于n的最整数。例如,10.01向上取整后ؓ11Q?.99向上取整后ؓ?(q是因ؓ对于负数Q?大于?0)。ceil()Ҏ只有一个参敎ͼ即需要向上取整的数倹{?/p>
ceil()Ҏ的用与W?章中介绍q的parseInt()Ҏ是不同的。parseInt()Ҏ只是单地截断数点之后的所有数字,把整数部分保留下来。而ceil(n)Ҏ向上取_q回大于或等于n的最整数?/p>
例如Q下面的代码在面上输Z行信息,W一行ؓceil()Ҏ?01.01向上取整的结?02Q第二行为parseInt()Ҏ取整的结?01:
var myNumber = 101.01;
document.write(Math.ceil(myNumber) + "<BR>");
document.write(parseInt(myNumber));
3Qfloor()Ҏ
与ceil()ҎcMQfloor()Ҏ也用于对一个数字进行取_所不同的是Qfloor()Ҏ用于向下取整Q它把一个数值向下舍入到最接近的最大整敎ͼ卛_于Math.floor(n)ҎQ它返回小于或{于n的最大整数。例如,Math.floor(10.01)返?0Q而Math.floor(?.99)返回?0?/p>
4Qround()Ҏ
round()Ҏ用于对一个数D行四舍五入,卛_一个数数部分大于{于0.5Ӟ则向上舍入,于{于0.5时则向下舍入?/p>
例如Q对于如下代码:
var myNumber = 44.5;
document.write(Math.round(myNumber) + "<BR>");
myNumber = 44.49;
document.write(Math.round(myNumber));
对于44.5四舍五入ؓ45Q而对?4.49则四舍五入ؓ44?/p>
5Q关于取整方法的结
正如上面所qͼceil()Ҏ?floor()Ҏ和round()Ҏ都可以进行取整操作。但各个Ҏ的取整操作是不同的。对于floor(n)ҎQ它q回于或等于n的最大整敎ͼ对于ceil(n)ҎQ它q回大于或等于n的最整敎ͼ而round(n)Ҏ对nq行四舍五入。这几个Ҏ可能ҎhQ表4-3格则用实例进行了说明Q它昄了一列数|以及这些数g为参数分别传入parseInt()函数、ceil()Ҏ、floor()Ҏ和round()Ҏ时的q回倹{?/p>
表?4-3
参 ??/p>
parseInt()
Ҏ的返回?/p>
ceil()
Ҏ的返回?/p>
floor()
Ҏ的返回?/p>
round()
Ҏ的返回?/p>
10.25
10
11
10
10
10.75
10
11
10
11
10.5
10
11
10
11
?0.25
?0
?0
?1
?0
?0.75
?0
?0
?1
?1
?0.5
?0
?0
?1
?0
注意Q与表中其他的方法不同的是:parseInt()函数是一个JavaScript内置对象Q而不是Math对象的一个方法?/p>
]]> CSS动属性Float详解 http://www.aygfsteel.com/kyleYang/archive/2009/12/16/306233.html飞熊 飞熊 Wed, 16 Dec 2009 15:28:00 GMT http://www.aygfsteel.com/kyleYang/archive/2009/12/16/306233.html http://www.aygfsteel.com/kyleYang/comments/306233.html http://www.aygfsteel.com/kyleYang/archive/2009/12/16/306233.html#Feedback 0 http://www.aygfsteel.com/kyleYang/comments/commentRss/306233.html http://www.aygfsteel.com/kyleYang/services/trackbacks/306233.html
CSS动属性Float详解
什么是CSS FloatQ?/h2>
float ?css 的定位属?/strong>。在传统的印刷布局中,文本可以按照需要围l图片。一般把q种方式UCؓ“文本环l”。在|页设计中,应用了CSS的float属性的面元素像在印刷布局里面的被文字包围的图片一栗Q动的元素仍然是网|的一部分。这与用绝?定位的页面元素相比是一个明昄不同。绝对定位的面元素被从|页里面移除了Q就像印刷布局里面的文本框被设|ؓ无视面环绕一栗绝对定位的元素不会 影响其它元素Q其它元素也不会影响它,无论它是否和其它元素挨着?/p>
像这样在一个元素上用CSS讄动Q?/p>
#sidebar { float: right; }
fload属性有四个可用的|Left 和Right 分别动元素到各自的方向QNone (默认? 使元素不动QInherit 会从父U元素获取float倹{?/p>
Float的用?/h2>
除了单的在图片周围包围文字,动可用于创建全部网布局?/p>
Float对小型的布局同样有用。例如页面中的这个小区域。如果我们在我们的小头像囄上用FloatQ当调整囄大小的时候,盒子里面的文字也自动调整位|:
同样的布局可以通过在外容器使用相对定位Q然后在头像上用绝对定位来实现。这U方式中Q文本不会受头像囄大小的媄响,不会随头像图片的大小而有相应变化?/p>
清除Float
清除(clear)是Q?float)的相兛_?一个设|了清除Float的元素不会如动所讄的一P向上Ud到Float元素的边界,而是会忽视Q动向下移动。如下,一N千言?span id="more-11034">
上例中,侧栏向右动Qƈ且短于主内容区域。页?footer)于是按Q动所要求的向上蟩C可能的空间。要解决q个问题Q可以在脚(footer)上清除Q动,以ə脚(footer)待在动元素的下面?/p>
清除(clear)也有4个可能倹{最常用的是 bothQ清楚左右两边的动。left ?right 只能清楚一个方向的动。none 是默认|只在需要移除已指定的清除值时用到。inherit 应该时第五个|不过很奇怪的?IE 不支?q个不奇怪吧QIE 从来都这么特立独行吧 Q糖伴西U柿?。只清除左边或右边的动Q实际中很少见,不过l对有他们的用处?/p>
伟大的塌?/h2>
使用动(float)的一个比较疑惑的事情是他们怎么影响包含他们的父元素的。如果父元素只包含Q动元素,那么它的高度׃塌羃为零。如果父元素不包含Q何的可见背景Q这个问题会很难被注意到Q但是这是一个很重要的问题?/p>
塌陷的直观对立面更不好,看看下面的情况:
当上面的块元素自动扩展以适应动元素ӞD落间的文本中会出现非自然的空白换行,而且没有有效的方法来修正q个问题。对于这U情况,设计师的抱怨会更甚于对塌陷的抱怨(没理解,不是设计完成之后才会q行面~码吗?Q?p伴西红柿)?/p>
Z防止怪异的布局和跨览器的问题Q塌陷问题几乎L被要处理的。我们在容器中的动元素之后Q容器结束之前来清除动?/p>
清除动的技?/h2>
如果你很明确的知道接下来的元素会是什么,可以使用 clear:both; 来清除Q动。这个方法很不错Q它不需?hackQ不d额外的元素也使得它有良好的语义性。当然事情ƈ不是都可以这栯决的Q工L中还是需要另外几个清除Q动的工具?/p>
IdivҎ 从字面来看,是一个空?div?br />。有时可能会?br />或者一些其他元素,但是 div 是最常用的,因ؓ它没有浏览器默认样式Q没有特D功能,而且一般不会被 css 样式化。这个方法因为只是ؓ了表玎ͼ寚w面没有上下文涵义而被U语义论者嘲W。诚Ӟ从严格的角度来说他们是对的,但是q个Ҏ有效而且没有M伤害?
overflow Ҏ 在父元素上设|?overflow q个 css 属性。如果父元素的这个属性设|ؓ auto 或?hiddenQ父元素׃扩展以包含Q动。这个方法有着较好的语义性,因ؓ他不需要额外元素。但是,如果需要增加一个新?div 来用这个方法,其实和I?div Ҏ一h有语义了。而且要记住,overflow 属性不是ؓ了清除Q动而定义的。要心不要覆盖住内Ҏ者触发了不需要的滚动条?
单清除方?/strong>使用了一个聪明的 css 伪选择W?:after)来清除Q动。比起在父元素上讄 overflowQ只需要给它增加一个额外的cM于”clearfix”的cR这个类使用如下 css: .clearfix:after {
content: ".";
visibility: hidden;
display: block;
height: 0;
clear: both;
}
q会在清除Q动的父元素之后应用一点看不见的内宏V这不是全部内容 Q还需要一些额外的代码来适应那些老旧的浏览器?
不同的情况需要不同的动清除Ҏ。以一个具有不同样式块的网gؓ例?/p>
Z从视觉上较好的把怼的块联系hQ需要在必要的地方开启新行,q里是颜色改变的地方。如果每个颜色组都有一个父元素的话Q我们可以?overflow 或?单清除方法。或者,在每l之间用一个空divҎ。额外的 div 之前q不存在Q可以自p试来看看哪个Ҏ好?/p>
动的问?/h2>
动因脆p饱受诟病。大多数的脆弱性来自于 IE6 及其一pd的Q动相?bug。因来越多的设计师不再支?IE6 了,你也可以不关注它了。不q对于那些要x的h来说Q这里有些大概?/p>
推?/strong>是Q动元素内的元素(大多是图片)比Q动元素本w宽造成的现象。大多数的浏览器会在动之外渲染囄Q但是不会有伸出来的部分影响其他布局。IE 会扩展Q动来包含囄Q精彩大q度地媄响布局。一个普遍的例子是突破Z内容之外把侧栏推C面?img class="aligncenter" title="CSS动属性Float详解" alt="pushdown2 CSS动属性Float详解" src="http://paranimage.com/images/css-float/pushdown2.png" />
快速修?/strong>Q确保不是图片造成q种情况Q?overflow:hidden 来切除多余的部分?
双倍边距bug 处理 IE6 Ӟ另一个需要记住的事情是,如果在和动方向相同的方向上讄外边?margin)Q会引发双倍边?/a>。快速修正:lQ动设|?display:inline; 而且不用担心Q它依然是块U元素?
3像素间距 是指挨着动元素的文本会奇的被t出?像素Q好像Q动元素的周围有一个奇怪的力场一栗快速修正:在受影响的文本上讄宽度或高度?
IE7 中,底边?bug 是当动父元素有动子元素时Q这些子元素的底边距会被父元素忽略掉。快速修正:用父元素的底内补?padding)代替?
摘自Q?a >http://paranimage.com/css-float-attribute/
CSS?clear:both;可以l结在出C之前的Q?CSS?clear:both;可以l结在出C之前的Q?br />
例如
<style> .demodiv{float:left;width:100px;height:50px;background:red;margin:5px;} .d{clear:both} </style> <div class="demodiv">1</div> <div class="demodiv">2</div> <div class="d"></div> <div class="demodiv">3</div> <div class="demodiv">4</div>
]]>
JavaScript面向对象~程Q?Q?- cȝ定义 http://www.aygfsteel.com/kyleYang/archive/2009/12/08/305174.html飞熊 飞熊 Tue, 08 Dec 2009 07:40:00 GMT http://www.aygfsteel.com/kyleYang/archive/2009/12/08/305174.html http://www.aygfsteel.com/kyleYang/comments/305174.html http://www.aygfsteel.com/kyleYang/archive/2009/12/08/305174.html#Feedback 0 http://www.aygfsteel.com/kyleYang/comments/commentRss/305174.html http://www.aygfsteel.com/kyleYang/services/trackbacks/305174.html JavaScript面向对象~程Q?Q?-- 基础 ?br /> 上篇说过QJavaScript没有cȝ概念Q需要通过函数来实现类的定义。先通过一个例子说明:function myClass() { var id = 1 ; var name = " johnson " ; // properties this .ID = id; this .Name = name; // method this .showMessage = function () { alert( " ID: " + this .ID + " , Name: " + this .Name); } }var obj1 = new myClass(); var obj2 = new myClass(); function的定义实际上相当于类的构造函敎ͼ最后两句是创徏q个cȝ实例。先分析W一句:var obj1 = new myClass(); 当用new创徏cȝ实例Ӟ解释器首先会创徏一个空的对象。然后运行这个myClass函数Qƈthis指针指向q个cȝ实例。当到this .ID = id; ?span id="Codehighlighter1_19_250_Open_Text">this .Name = name; ?span id="Codehighlighter1_19_250_Open_Text">this .showMessage = function (){...} Ӟ便会创徏q两个属性,和这个方法,q把变量idQname的gU函数的定义赋给q两个属性及q个函数对象QshwoMessageQ。这个过E相当于初始化这个对象,cM于C# 中的构造函数。最后newq回q个对象。再看第二句Q?span style="COLOR: #0000ff">var obj2 = new myClass(); 执行q程与上一句代码相同,卛_Z个空对象Q然后执行myClassq个函数Q定义两个属性和一个方法?/span> 从上面的分析中可以看刎ͼ上面q种实现cȝ方式Q即在函数的定义中定义类的属性方法。存在着弊端。如果需要创Z个或更多q个cȝ实例Ӟ上文是两个,q些属性会被重复的创徏多次?br /> 那么如何避免q种情况呢?上一中也曾提到q用prototype。prototype和它的名字一h一个原型,每一个function都有一个子对象prototypeQ它其实表示q个function对象的成员的集合Q由于这里我们用function实现cȝQ所以可以说prototype其实是便是cȝ成员的集合。prototype定义的属性和Ҏ执行在函数的构造体执行之前Q所以当new一个对象之前,其实prototype的成员已l执行过了。先看一个例子:function myClass() { // 构造函?/span>} myClass.prototype = { ID: 1 , Name: " johnson " , showMessage: function () { alert( " ID: " + this .ID + " , Name: " + this .Name); } } var obj1 = new myClass(); var obj2 = new myClass(); cȝl构q是和前面的例子相同Q只不过q里是利用了prototype来实现。还是先看最后两句,前面说过Qprototype是执行在函数构造体之前Q即执行?span style="COLOR: #0000ff">var obj1 = new myClass(); 之前Q这个类已经有了IDQName属性和showMessageҎ。执行者一句时执行q程如下Q注意和前一个例子比较:首先q是创徏一个空的对象,q把this指针指向q个对象。然后将函数的prototype对象的所有成员都赋给q个对象Q注意没有再创徏q些成员Q。然后执行函C。最后newq回q个对象。执行下一句时Q同h行此q程Q不会重复创些成员?br /> 上面的代码还只是一个例子,在实际的目中,可能出现的是cM有大量的成员Q同时可能需要创建大量的实例。这是prototype׃昄其优性了。另外上面的代码中用了大括可法定义了prototype的成员,q样看v来代码更清晰。这是一U比较推荐的cȝ设计模式。当然在众多的项目中Q可能还会发现更好的模式Q我们也希望能有更优化的JavaScript的编E模式不断推陈出斎ͼ也希望随着旉的推U,各主浏览器也对JavaScript的解析都标准Q统一?br /> 上面说过prototype定义的成员是发生在构造体之前Q可以证明一下,在上面的例子中,构造体是空的,在构造函C加入一?span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Verdana','sans-serif'">alert(this .Name); Q当执行?span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'">var obj1 = new myClass(); Ӟ会看到弹出对话框Q显C正的属性倹{?br /> 写了q段文字之后承蒙多ؓ兄弟的点评,收获匪浅。对上面的例子进一步讨论,如下代码Q?br />function subClass() { } subClass.prototype = { Name: " sub " }function myClass() { // 构造函?/span>} myClass.prototype = { ID: 1 , Name: " johnson " , SubObj: new subClass(), showMessage: function () { alert( " ID: " + this .ID + " , Name: " + this .Name + " SubObj.Name: " + this .SubObj.Name); } } var obj1 = new myClass(); obj1.SubObj.Name = " XXX " ; obj1.showMessage(); var obj2 = new myClass(); obj2.showMessage(); q里在myClass中定义了一个引用类型,其类型是我们自定义的一个subClassc,q个子类中有一个Name属性。由于prototype对象是共享的Q按照我们上面的分析Q在执行var obj1 = new myClass(); Ӟ会把myClass的prototype中的成员复制l这个obj1实例。但q里SubObj是一个引用类型,在执行到var obj2 = new myClass(); Ӟprototype中的IDQName成员会复制到obj2中,但SubObjq个属性不会复制过去,而是引用了prototype中的SubObjQ所以因Z一句修改了obj1.Subobj.Name的|所以在用new生成obj2实例Ӟ引用C修改后的倹{?br /> 所以借用prototype定义cLQ依焉要将属性定义在构造体中,而将Ҏ定义在该构造体的原型上。如下:function myClass(id, name) { this .ID = id; this .Name = name; } myClass.prototype = { showMessage: function () { alert( " ID: " + this .ID + " , Name: " + this .Name); } , showMessage2: function () { alert( " Method2 " ); } } var obj1 = new myClass( 1 , " johnson " ); obj1.showMessage(); obj1.Name = " John " ; obj1.showMessage(); var obj2 = new myClass( 2 , " Amanda " ); obj2.showMessage(); 关于U有成员Q共有成员以及静态成员,cȝl承Q抽象类Q虚ҎQ类的反等实现ҎQ以后还会坚持写下去。不q我觉得需要说一下的是,我打写的是JavaScript面向对象的基实现Q如果需要深入的学习参考李战老哥的“甘露模型”?br /> ]]>JavaScript面向对象~程Q?Q?/title> http://www.aygfsteel.com/kyleYang/archive/2009/12/08/305173.html飞熊 飞熊 Tue, 08 Dec 2009 07:39:00 GMT http://www.aygfsteel.com/kyleYang/archive/2009/12/08/305173.html http://www.aygfsteel.com/kyleYang/comments/305173.html http://www.aygfsteel.com/kyleYang/archive/2009/12/08/305173.html#Feedback 0 http://www.aygfsteel.com/kyleYang/comments/commentRss/305173.html http://www.aygfsteel.com/kyleYang/services/trackbacks/305173.html 1. 用JavaScript实现c?br /> JavaScritpt没有专门的机制实现类Q这里是借助它的函数允许嵌套的机制来实现cȝ。一个函数可以包含变量,又可以包含其它函敎ͼq样Q变量可以作为属性,内部的函数就可以作ؓ成员Ҏ了。因此外层函数本w就可以作ؓ一个类了。如下:function myClass() { // 此处相当于构造函?/span>} q里 myClass是一个类。其实可以把它看成类的构造函数。至于非构造函数的部分Q以后会详细描述?br /> 2. 如何获得一个类的实?br /> 实现了类应该可以获得类的实例,JavaScript提供了一个方法可以获得对象实例。即 new操作W。其实JavaScript中,cd函数是同一个概念,当用new操作一个函数时p回一个对象。如下:var obj1 = new myClass(); 3. 对象的成员的引用 在JavaScript中引用一个类的属性或Ҏ的方法有以下三种?br /> 1> 点号操作W?br /> q是一U最普遍的引用方式,׃累赘。即如下形式Q?br />对象?属性名; 对象?Ҏ? 2> Ҏ号引?br /> JavaScript中允许用Ҏ号引用对象的成员。如下:对象名[ " 属性名 " ]; 对象名[ " Ҏ?/span>" ]; q里Ҏ号内是代表属性或Ҏ名的字符Ԍ不一定是字符串常量。也可以使用变量。这样就可以使用变量传递属性或Ҏ名。ؓ~程带来了方ѝ在某些情况下,代码中不能确定要调用那个属性或ҎӞ可以采用这U方式。否则,如果使用点号操作W,q需要用条件判断来调用属性或Ҏ?br /> 另外Q用方括号引用的属性和Ҏ名还可以以数字开_或者出现空|而用点号引用的属性和Ҏ名则遵@标示W的规则。但一般不提倡用非标示W的命名Ҏ?br /> 3> 使用eval函数 如果不希望用变量传递变量或Ҏ名,又不想用条件判断,那么eval函数是一个好的选择。eval接收一个字W串cd的参敎ͼ然后这个字W串作ؓ代码在上下文中执行,q回执行的结果。这里正是利用了eval的这一功能。如下:alert(eval( " 对象? " + element.value)); 4. 对对象属性,Ҏ的添加、修改和删除操作 JavaScript中,在生成对象之后还可以为对象动态添加、修改和删除属性和ҎQ这与其它面向对象的语言是不同的?br /> 1> d属性和Ҏ 先创Z个对象,I对象创建后没有M属性和ҎQ然而我们可以在代码中创建?br />var obj1 = new Object(); // d属?/span>obj1.ID = 1 ; obj1.Name = " johnson " ; // dҎ obj1.showMessage = function() { alert( " ID: " + this .ID + " , Name: " + this .Name); } 2> 修改属性与Ҏ 与添加属性和ҎcMQ例如接着上面的例子:// 修改属?/span>obj1.ID = 2 ; obj1.Name = " Amanda " ; // 修改Ҏ obj1.showMessage = function() { alert( " ID: " + this .ID " ); } 3> 删除属性与Ҏ 直接要删除的属性或Ҏ赋gؓundefined卛_Q?br />obj1.ID = 1; obj1.Name = undefined; obj1.showMessage = undefined; 5. 创徏无类型对象?br /> cM于C#3.0里的Anonymous TypesQJavaScript 也可以创建无cd的对象。Ş式如下:var obj1 = {} ; var obj2 = { ID: 1 , Name: " Johnson " , showMessage: function() { alert( " ID: " + this .ID + " Name: " + this .Name); } } q里定义了两个无cd的对象,obj1和obj2。其中obj1是一个空对象。obj2包括两个属性ID, Name和一个方法showMessage。每个属性和Ҏ用逗号分割。属?Ҏ)名和其g间用分号分割?br /> 用这U方式创建属性方法时Q也可以用字W串定义属性方法的名字。如Q?br />var obj2 = { " ID " : 1 , " Name " : " Johnson " } 6. prototype 每个函数对象都具有一个子对象prototypeQ因为函C可以表示c,所以prototype表示一个类的成员的集合。当new 一个对象时Qprototype对象的成员都会被实例化成对象的成员。先看一个例子:function myClass() { } myClass.prototype.ID = 1 ; myClass.prototype.Name = " johnson " ; myClass.prototype.showMessage = function () { alert( " ID: " + this .ID + " Name: " + this .Name); } var obj1 = new myClass(); obj1.showMessage(); 使用prototype对象创徏cL一个好处。如果将所有的成员直接写在cȝ声明中,如下Q?br />function myClass() { // d属?/span> this .ID = 1 ; this .Name = " johnson " ; // dҎ this .showMessage = function() { alert( " ID: " + this .ID + " , Name: " + this .Name); } } var obj1 = new myClass(); var obj2 = new myClass(); 在上面的代码中,定义了一个类myClassQ在cM直接定义了两个属性和一个方法。然后实例化了两个对象,q里的两个属性和一个方法,每创ZơmyClass对象都会被创Zơ,费了内存空间。而用prototype以后可以解册个问题,每new一个函数时Q其prototype对象的成员都会自动赋l这个对象,当new多个对象时不会重复创建?br /> ׃prototype的初始化发生在函C执行之前Q用以下代码可以证明Q?br />function myClass() { // 此处相当于构造函?/span> this .ID = 1 ; this .Name1 = this .Name; this .showMessage(); } myClass.prototype.Name = " johnson " ; myClass.prototype.showMessage = function () { alert( " ID: " + this .ID + " , Name: " + this .Name); } var obj1 = new myClass(); 执行以上代码可以发现当newq个cd的对象时Q即弹出了对话框?br /> 最后只得一提的是,prototype有一个方法,在面向对象的设计中用得到。即Qconstructor属性,是对构造函数的调用Q这里的构造函数即上文提到的类的声明里的代码。如Q?br />function myClass() { // 此处相当于构造函?/span> alert( " this is in constructor " ); } myClass.prototype.constructor();var obj1 = new myClass(); 执行以上代码你会发现对话框弹Z两次。由此可见,prototype可专门用于设计类的成员,实际上在JavaScript面向对象的设计中Q很多时候都会用到prototype?br /> ]]> JS日期比较--l?/title> http://www.aygfsteel.com/kyleYang/archive/2009/10/25/299638.html飞熊 飞熊 Sat, 24 Oct 2009 17:44:00 GMT http://www.aygfsteel.com/kyleYang/archive/2009/10/25/299638.html http://www.aygfsteel.com/kyleYang/comments/299638.html http://www.aygfsteel.com/kyleYang/archive/2009/10/25/299638.html#Feedback 0 http://www.aygfsteel.com/kyleYang/comments/commentRss/299638.html http://www.aygfsteel.com/kyleYang/services/trackbacks/299638.html
{
var d1 = new Date(document.getElementById('txbFromDate').value.replace(/\-/g, "\/"));
var d2 = new Date(document.getElementById('txbToDate').value.replace(/\-/g, "\/"));
if(d1>d2)
{
alert("l束旉必须在开始时间之?");
return false;
}
return true;
}
]]> JS日期比较 http://www.aygfsteel.com/kyleYang/archive/2009/10/25/299632.html飞熊 飞熊 Sat, 24 Oct 2009 16:11:00 GMT http://www.aygfsteel.com/kyleYang/archive/2009/10/25/299632.html http://www.aygfsteel.com/kyleYang/comments/299632.html http://www.aygfsteel.com/kyleYang/archive/2009/10/25/299632.html#Feedback 0 http://www.aygfsteel.com/kyleYang/comments/commentRss/299632.html http://www.aygfsteel.com/kyleYang/services/trackbacks/299632.html
var currentDate = new Date();
if(currentDate.getYear() > inputDate.getYear())
return -1;
else if(currentDate.getYear() < inputDate.getYear())
return 1;
if(currentDate.getMonth() > inputDate.getMonth())
return -1;
else if(currentDate.getMonth() < inputDate.getMonth())
return 1;
if(currentDate.getDate() > inputDate.getDate())
return -1;
else if(currentDate.getDate() < inputDate.getDate())
return 1;
return 0;
}
function Compare() {
var sday = document.getElementById("day").value.split('-');
var inputDate = new Date(sday[0],sday[1]-1,sday[2]);
if(isNaN(inputDate)){
alert("不是日期");
return;
}
var result = CompareDate(inputDate);
if(result < 0)
alert(inputDate.toLocaleString() + "于当前日期");
else if(result > 0)
alert(inputDate.toLocaleString() + "大于当前日期");
else
alert(inputDate.toLocaleString() + "{于当前日期");
}
]]>
վ֩ģ壺
Ͱ |
|
|
|
Ϫ |
|
Ǩ |
ï |
¹ |
Ͻ |
|
Ѷ
|
|
ַ |
¬ |
|
ϳ |
|
Զ |
|
|
|
ͼ |
|
|
ƽ |
Ϊ |
|
|
|
|
罭 |
|
˳ |
|
Զ |
差 |
|
|
ɽ |
ɽ |