<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post//</link>
<title><![CDATA[Js、Jquery字符串数字比较大小！]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Php/Js/Shell/Go]]></category>
<pubDate>Tue, 12 May 2015 05:22:09 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	背景：如果用前端的js去做比较两个小数点1位的温度谁高谁低，那么直接用大于符号小于符号会有点问题，这篇文章就是讲解这一块的事情。<br/><br/>var定义的变量应该是字符串，有时没有经过类型转换而进行比较的话，小于十的话还可以，如果大于十就会出错。<br/>js提供了parseInt()和parseFloat()两个转换函数。前者把值转换成整数，后者把值转换成浮点数。只有对String类型调用这些方法，这两个函数才能正确运行；对其他类型返回的都是NaN(Not a Number)。<br/><br/>例：<br/>var hour_select_begin=$(&#039;#hour_select_begin option:selected&#039;).text();<br/>var hour_select_end=$(&#039;#hour_select_end option:selected&#039;).text();<br/>if(hour_select_begin&gt;hour_select_end)&#123;<br/>alert(&quot;开始时间不能大于结束时间&quot;);<br/>return false;<br/>&#125;<br/><br/>这时如果 hour_select_begin&gt;=10 则判断会有问题；<br/>修正方法1：<br/>if(eval_r(hour_select_begin)&gt;eval_r(hour_select_end))&#123;<br/>alert(&quot;开始时间不能大于结束时间&quot;);<br/>return false;<br/>&#125;<br/>修正方法2：<br/>将String转为number类型： hour_select_begin=hour_select_begin-0;<br/> hour_select_begin=hour_select_end -0;<br/><br/><br/>补充：<br/>js 字符串转换数字&nbsp;&nbsp;<br/>方法主要有三种<br/><br/>转换函数、强制类型转换、利用js变量弱类型转换。<br/><br/>1. 转换函数：<br/><br/>js提供了parseInt()和parseFloat()两个转换函数。前者把值转换成整数，后者把值转换成浮点数。只有对String类型调用这些方法，这两个函数才能正确运行；对其他类型返回的都是NaN(Not a Number)。<br/><br/><br/><br/>一些示例如下：<br/><br/>parseInt(&quot;1234blue&quot;); //returns 1234<br/>parseInt(&quot;0xA&quot;); //returns 10<br/>parseInt(&quot;22.5&quot;); //returns 22<br/>parseInt(&quot;blue&quot;); //returns NaN<br/><br/><br/><br/>parseInt()方法还有基模式，可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。基是由parseInt()方法的第二个参数指定的，示例如下：<br/><br/>parseInt(&quot;AF&quot;, 16); //returns 175<br/>parseInt(&quot;10&quot;, 2); //returns 2<br/>parseInt(&quot;10&quot;, 8); //returns 8<br/>parseInt(&quot;10&quot;, 10); //returns 10<br/>如果十进制数包含前导0，那么最好采用基数10，这样才不会意外地得到八进制的值。例如：<br/>parseInt(&quot;010&quot;); //returns 8<br/>parseInt(&quot;010&quot;, 8); //returns 8<br/>parseInt(&quot;010&quot;, 10); //returns 10<br/><br/><br/><br/>parseFloat()方法与parseInt()方法的处理方式相似。<br/>使用parseFloat()方法的另一不同之处在于，字符串必须以十进制形式表示浮点数，parseFloat()没有基模式。<br/><br/>下面是使用parseFloat()方法的示例：<br/>parseFloat(&quot;1234blue&quot;); //returns 1234.0<br/>parseFloat(&quot;0xA&quot;); //returns NaN<br/>parseFloat(&quot;22.5&quot;); //returns 22.5<br/>parseFloat(&quot;22.34.5&quot;); //returns 22.34<br/>parseFloat(&quot;0908&quot;); //returns 908<br/>parseFloat(&quot;blue&quot;); //returns NaN<br/><br/>2. 强制类型转换<br/><br/>还可使用强制类型转换（type casting）处理转换值的类型。使用强制类型转换可以访问特定的值，即使它是另一种类型的。<br/>ECMAScript中可用的3种强制类型转换如下：<br/>Boolean(value)——把给定的值转换成Boolean型；<br/>Number(value)——把给定的值转换成数字（可以是整数或浮点数）；<br/>String(value)——把给定的值转换成字符串。<br/>用这三个函数之一转换值，将创建一个新值，存放由原始值直接转换成的值。这会造成意想不到的后果。<br/>当要转换的值是至少有一个字符的字符串、非0数字或对象时，Boolean()函数将返回true。如果该值是空字符串、数字0、undefined或null，它将返回false。<br/><br/>可以用下面的代码段测试Boolean型的强制类型转换。<br/><br/>Boolean(&quot;&quot;); //false – empty string<br/>Boolean(&quot;hi&quot;); //true – non-empty string<br/>Boolean(100); //true – non-zero number<br/>Boolean(null); //false - null<br/>Boolean(0); //false - zero<br/>Boolean(new Object()); //true – object<br/><br/>Number()的强制类型转换与parseInt()和parseFloat()方法的处理方式相似，只是它转换的是整个值，而不是部分值。示例如下：<br/><br/>用　　法 结　　果<br/>Number(false) 0<br/>Number(true) 1<br/>Number(undefined) NaN<br/>Number(null) 0<br/>Number( &quot;5.5 &quot;) 5.5<br/>Number( &quot;56 &quot;) 56<br/>Number( &quot;5.6.7 &quot;) NaN<br/>Number(new Object()) NaN<br/>Number(100) 100&nbsp;&nbsp; <br/><br/>最后一种强制类型转换方法String()是最简单的，示例如下：<br/><br/>var s1 = String(null); //&quot;null&quot;<br/>var oNull = null;<br/>var s2 = oNull.toString(); //won’t work, causes an error<br/><br/>3. 利用js变量弱类型转换<br/><br/>举个小例子，一看，就会明白了。<br/>&lt;script&gt;<br/>var str= &#039;012.345 &#039;;<br/>var x = str-0;<br/>x = x*1;<br/>&lt;/script&gt;<br/><br/>上例利用了js的弱类型的特点，只进行了算术运算，实现了字符串到数字的类型转换，不过这个方法还是不推荐的<br/><br/><br/><br/><br/><br/>转换成数字<br/>ECMAScript提供了两种把非数字的原始值转换成数字的方法，即parseInt()和parseFloat()。<br/>注意：只有对String类型(Number除外)调用这些方法，才能正确运行对其他类型返回的都是NaN。<br/>例如：<br/>Js代码<br/>var iNum1 = parseInt(“1234blue”);//returns 1234&nbsp;&nbsp;&nbsp;&nbsp;var iNum2 = parseInt(“oxA”); //returns 10&nbsp;&nbsp;&nbsp;&nbsp;var iNum3 = parseInt(“22.5″); //returns 22&nbsp;&nbsp;&nbsp;&nbsp;var iNum4 = parseInt(“blue”); //returns NaN&nbsp;&nbsp;<br/>以下其他类型转换<br/>一、类型转换<br/>1.转换成字串<br/>ECMAScript的Boolean值、数字和字串的原始值的有趣之处在于它们是伪对象，这意味着它们实际上具有属性和方法。<br/>如：<br/>Js代码<br/>var sColor = “blue”;&nbsp;&nbsp; <br/>alert(sColor.length);//outputs “4″&nbsp;&nbsp;<br/>总而言之，3种主要的原始值Boolean值、数字和字串都有toString()方法。ECMAScript定义的所有对象都有toString()方法，无论它是伪对象，还是真的对象。<br/>Boolean型的toString()方法只是输出”true”或”false”,结果由变量的值决定：<br/>Js代码<br/>var bFound = false;&nbsp;&nbsp; <br/>alert(bFound.toString());//outputs “false”&nbsp;&nbsp;<br/>Number类型的toString()方法比较特殊，它有两种模式，即默认模式和基模式，采用默认模式，toString()方法只是用相应的字符串输出数字值(无论是整数、浮点数还是科学记数法)。<br/>Js代码<br/>var iNum1 = 10;&nbsp;&nbsp;&nbsp;&nbsp;var fNum2 = 10.0;&nbsp;&nbsp;&nbsp;&nbsp;alert(iNum1.toString()); //outputs “10″&nbsp;&nbsp;&nbsp;&nbsp;alert(fNum2.toString()); //outputs “10″&nbsp;&nbsp;<br/>采用Number类型的toString()方法的基模式，可以用不同的基(进制基数)输出数字。<br/>Js代码<br/>var iNum = 10;&nbsp;&nbsp;&nbsp;&nbsp;alert(iNum.toString(2));&nbsp;&nbsp;//outputs “1010″&nbsp;&nbsp;&nbsp;&nbsp;alert(iNum.toString(8));&nbsp;&nbsp;//outputs “12″&nbsp;&nbsp;&nbsp;&nbsp;alert(iNum.toString(16)); //outputs “A”&nbsp;&nbsp;<br/>2.转换成数字<br/>ECMAScript提供了两种把非数字的原始值转换成数字的方法，即parseInt()和parseFloat()。<br/>注意：只有对String类型(Number除外)调用这些方法，才能正确运行对其他类型返回的都是NaN。<br/>例如：<br/>Js代码<br/>var iNum1 = parseInt(“1234blue”);//returns 1234&nbsp;&nbsp;&nbsp;&nbsp;var iNum2 = parseInt(“oxA”); //returns 10&nbsp;&nbsp;&nbsp;&nbsp;var iNum3 = parseInt(“22.5″); //returns 22&nbsp;&nbsp;&nbsp;&nbsp;var iNum4 = parseInt(“blue”); //returns NaN&nbsp;&nbsp;<br/>parseInt()方法还有基模式，可以把二进制、八进制、十六进制或者其他任何进制的字符串转换成十进制整数。第二个参数指定按哪一种进制来解析。<br/>Js代码<br/>var iNum1 = parseInt(“AF”,16);// returns 175&nbsp;&nbsp;&nbsp;&nbsp;var iNum2 = parseInt(“10″,2); // returns 2&nbsp;&nbsp;&nbsp;&nbsp;var iNum3 = parseInt(“10″,8); //returns 8&nbsp;&nbsp;&nbsp;&nbsp;var iNum4 = parseInt(“10″,10); //returns 10&nbsp;&nbsp;<br/>说明：如果十进制数包含前导0，那么最好采用基数10，否则得到的是八进制的值。<br/>Js代码<br/>var iNum1 = parseInt(“010″);&nbsp;&nbsp;// returns 8&nbsp;&nbsp;&nbsp;&nbsp;var iNum2 = parseInt(“010″,8); //returns 8&nbsp;&nbsp;&nbsp;&nbsp;var iNum3 = parseInt(“010″,10);//returns 10&nbsp;&nbsp;<br/>parseFloat()方法与parseInt()方法的处理方式相似，从位置0开始查看每个字符，直到找到第一个非有效的字符为止，然后把该字符之前的字串转换成数字。对于这个方法来说，第一个出现的小数点是有效字符。如果用两个小数点，第二个小数点将被看作无效的。使用该方法的另一个不同之处在于，字串必须以十进制形式表示浮点数。<br/>Js代码<br/>var fNum1 = parseFloat(“1234blue”); //returns 1234.0&nbsp;&nbsp;&nbsp;&nbsp;var fNum2 = parseFloat(“0xA”); //returns NaN&nbsp;&nbsp; var fNum3 = parseFloat(“22.5″); //returns 22.5&nbsp;&nbsp;&nbsp;&nbsp;var fNum4 = parseFloat(“22.34.5″);//returns 22.34&nbsp;&nbsp;&nbsp;&nbsp;var fNum5 = parseFloat(“0908″);//returns NaN&nbsp;&nbsp;&nbsp;&nbsp;var fNum6 = parseFloat(“blue”);//returns NaN&nbsp;&nbsp;<br/>3.强制类型转换<br/>ECMAScript中可用的3种强制类型转换如下：<br/>(1).Boolean(value)<br/>把给定的值转换成Boolean型。<br/>当要转换的值是至少有一个字符的字符串、非0数字或对象时，Boolean()函数将返回true。如果该值是空字符串、数字0、undefined或null,它将返回false。<br/>如：<br/>Js代码<br/>var b1 = Boolean(“”); // false;&nbsp;&nbsp;&nbsp;&nbsp;var b2 = Boolean(“hi”);//true&nbsp;&nbsp;&nbsp;&nbsp;var b3 = Boolean(100);//true&nbsp;&nbsp;&nbsp;&nbsp;var b4 = Boolean(null);//false&nbsp;&nbsp;&nbsp;&nbsp;var b5 = Boolean(0);//false&nbsp;&nbsp;&nbsp;&nbsp;var b6 = Boolean(new Object());//true&nbsp;&nbsp;<br/>(2).Number(value)<br/>把给定的值转换成数字（可以是整数或浮点数）。<br/>还记得parseInt()和parseFloat()方法只转换第一个无效字符之前的字符串，因此”4.5.6″将被转换为”4.5″。用Number()进行强制类型转换，”4.5.6″将返回NaN，因为整个字符串值不能转换成数字。如果字符串能被完整地转换，Number()将判断是调用parseInt()方法还是调用parseFloat()方法。<br/>如：<br/>Js代码<br/>Number(false);//0&nbsp;&nbsp;&nbsp;&nbsp;Number(true);//1&nbsp;&nbsp;&nbsp;&nbsp;Number(undefined);//NaN&nbsp;&nbsp;&nbsp;&nbsp;Number(null);//0&nbsp;&nbsp;&nbsp;&nbsp;Number(“5.5″);//5.5&nbsp;&nbsp;&nbsp;&nbsp;Number(“56″);//56&nbsp;&nbsp;&nbsp;&nbsp;Number(“5.6.7″);//NaN&nbsp;&nbsp;&nbsp;&nbsp;Number(new Object());//NaN&nbsp;&nbsp;&nbsp;&nbsp;Number(100);//100&nbsp;&nbsp;<br/>(3).String(value)<br/>把给定的值转换成字串。<br/>与调用toString()方法的唯一不同之处在于，对null或undefined值强制类型转换可以生成字符串而不引发错误：<br/>Js代码<br/>var s1 = String(null);//”null”&nbsp;&nbsp;&nbsp;&nbsp;var oNull = null;&nbsp;&nbsp;&nbsp;&nbsp;var s2 = oNull.toString();//causes an error&nbsp;&nbsp;<br/>二、引用类型<br/>引用类型通常叫作类（class）,也就是说，遇到引用值时，所处理的就是对象。ECMAScript定义了“对象定义”，逻辑上等价于其他程序设计语言中的类。<br/>1.Object类<br/>ECMAScript中的所有类都由这个类继承而来，Object类中的所有属性和方法都会出现在其他类中(被覆盖)。<br/>Object类的属性：<br/>(1).Constructor—-对创建对象的函数的引用(指针)。对于Object类，该指针指向原始的object()函数。<br/>(2).Prototype—-对该对象的对象原型的引用。对于所有的类，它默认返回Object对象的一个实例。 一、类型转换<br/>1.转换成字串<br/>ECMAScript的Boolean值、数字和字串的原始值的有趣之处在于它们是伪对象，这意味着它们实际上具有属性和方法。<br/>如：<br/>Js代码<br/>var sColor = “blue”;&nbsp;&nbsp; alert(sColor.length);//outputs “4″&nbsp;&nbsp;<br/>总而言之，3种主要的原始值Boolean值、数字和字串都有toString()方法。ECMAScript定义的所有对象都有toString()方法，无论它是伪对象，还是真的对象。<br/>Boolean型的toString()方法只是输出”true”或”false”,结果由变量的值决定：<br/>Js代码<br/>var bFound = false;&nbsp;&nbsp; alert(bFound.toString());//outputs “false”&nbsp;&nbsp;<br/>Number类型的toString()方法比较特殊，它有两种模式，即默认模式和基模式，采用默认模式，toString()方法只是用相应的字符串输出数字值(无论是整数、浮点数还是科学记数法)。<br/>Js代码var iNum1 = 10;&nbsp;&nbsp; var fNum2 = 10.0;&nbsp;&nbsp; alert(iNum1.toString()); //outputs “10″&nbsp;&nbsp;alert(fNum2.toString()); //outputs “10″&nbsp;&nbsp;<br/>采用Number类型的toString()方法的基模式，可以用不同的基(进制基数)输出数字。<br/>Js代码var iNum = 10;&nbsp;&nbsp; alert(iNum.toString(2));&nbsp;&nbsp;//outputs “1010″&nbsp;&nbsp;alert(iNum.toString(8));&nbsp;&nbsp;//outputs “12″&nbsp;&nbsp;alert(iNum.toString(16)); //outputs “A”&nbsp;&nbsp;<br/>parseInt()方法还有基模式，可以把二进制、八进制、十六进制或者其他任何进制的字符串转换成十进制整数。第二个参数指定按哪一种进制来解析。<br/>Js代码var iNum1 = parseInt(“AF”,16);// returns 175&nbsp;&nbsp;var iNum2 = parseInt(“10″,2); // returns 2&nbsp;&nbsp;var iNum3 = parseInt(“10″,8); //returns 8&nbsp;&nbsp;var iNum4 = parseInt(“10″,10); //returns 10&nbsp;&nbsp;<br/>说明：如果十进制数包含前导0，那么最好采用基数10，否则得到的是八进制的值。<br/>Js代码var iNum1 = parseInt(“010″);&nbsp;&nbsp;// returns 8&nbsp;&nbsp;var iNum2 = parseInt(“010″,8); //returns 8&nbsp;&nbsp;var iNum3 = parseInt(“010″,10);//returns 10&nbsp;&nbsp;<br/>parseFloat()方法与parseInt()方法的处理方式相似，从位置0开始查看每个字符，直到找到第一个非有效的字符为止，然后把该字符之前的字串转换成数字。对于这个方法来说，第一个出现的小数点是有效字符。如果用两个小数点，第二个小数点将被看作无效的。使用该方法的另一个不同之处在于，字串必须以十进制形式表示浮点数。<br/>Js代码var fNum1 = parseFloat(“1234blue”); //returns 1234.0&nbsp;&nbsp;var fNum2 = parseFloat(“0xA”); //returns NaN&nbsp;&nbsp;var fNum3 = parseFloat(“22.5″); //returns 22.5&nbsp;&nbsp;var fNum4 = parseFloat(“22.34.5″);//returns 22.34&nbsp;&nbsp;var fNum5 = parseFloat(“0908″);//returns NaN&nbsp;&nbsp;var fNum6 = parseFloat(“blue”);//returns NaN&nbsp;&nbsp;<br/>3.强制类型转换<br/>ECMAScript中可用的3种强制类型转换如下：<br/>(1).Boolean(value)<br/>把给定的值转换成Boolean型。<br/>当要转换的值是至少有一个字符的字符串、非0数字或对象时，Boolean()函数将返回true。如果该值是空字符串、数字0、undefined或null,它将返回false。<br/>如：<br/>Js代码var b1 = Boolean(“”); // false;&nbsp;&nbsp;var b2 = Boolean(“hi”);//true&nbsp;&nbsp;var b3 = Boolean(100);//true&nbsp;&nbsp;var b4 = Boolean(null);//false&nbsp;&nbsp;var b5 = Boolean(0);//false&nbsp;&nbsp;var b6 = Boolean(new Object());//true&nbsp;&nbsp;<br/>(2).Number(value)<br/>把给定的值转换成数字（可以是整数或浮点数）。<br/>还记得parseInt()和parseFloat()方法只转换第一个无效字符之前的字符串，因此”4.5.6″将被转换为”4.5″。用Number()进行强制类型转换，”4.5.6″将返回NaN，因为整个字符串值不能转换成数字。如果字符串能被完整地转换，Number()将判断是调用parseInt()方法还是调用parseFloat()方法。<br/>如：<br/>Js代码Number(false);//0&nbsp;&nbsp;Number(true);//1&nbsp;&nbsp;Number(undefined);//NaN&nbsp;&nbsp;Number(null);//0&nbsp;&nbsp;Number(“5.5″);//5.5&nbsp;&nbsp;Number(“56″);//56&nbsp;&nbsp;Number(“5.6.7″);//NaN&nbsp;&nbsp;Number(new Object());//NaN&nbsp;&nbsp;Number(100);//100&nbsp;&nbsp;<br/>(3).String(value)<br/>把给定的值转换成字串。<br/>与调用toString()方法的唯一不同之处在于，对null或undefined值强制类型转换可以生成字符串而不引发错误：<br/>Js代码<br/>var s1 = String(null);//”null”&nbsp;&nbsp;var oNull = null;&nbsp;&nbsp; var s2 = oNull.toString();//causes an error&nbsp;&nbsp;<br/>二、引用类型<br/>引用类型通常叫作类（class）,也就是说，遇到引用值时，所处理的就是对象。ECMAScript定义了“对象定义”，逻辑上等价于其他程序设计语言中的类。<br/>1.Object类<br/>ECMAScript中的所有类都由这个类继承而来，Object类中的所有属性和方法都会出现在其他类中(被覆盖)。<br/>Object类的属性：<br/>(1).Constructor—-对创建对象的函数的引用(指针)。对于Object类，该指针指向原始的object()函数。<br/>(2).Prototype—-对该对象的对象原型的引用。对于所有的类，它默认返回Object对象的一个实例。<br/><br/>转自：http://blog.sina.com.cn/s/blog_4b7b2fc501010xar.html
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] Js、Jquery字符串数字比较大小！]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>