Welcom to 评论 - lizhenqiu blog!
#989
#990
#991
var num =2.446242342; num = num.toFixed(2); // 输出结果为 2.45
Math.floor(15.7784514000 * 100) / 100 // 输出结果为 15.77
Number(15.7784514000.toString().match(/^\d+(?:\.\d{0,2})?/)) // 输出结果为 15.77,不能用于整数如 10 必须写为10.0000
parseInt(5/2)
Math.ceil(5/2)
Math.round(5/2)
Math.floor(5/2)
<script> var num=22.127456; alert( Math.round(num*100)/100); </script>
function changeTwoDecimal(x) { var f_x = parseFloat(x); if (isNaN(f_x)) { alert('function:changeTwoDecimal->parameter error'); return false; } var f_x = Math.round(x*100)/100; return f_x; } 功能:将浮点数四舍五入,取小数点后2位 用法:changeTwoDecimal(3.1415926) 返回 3.14 changeTwoDecimal(3.1475926) 返回 3.15 js保留2位小数(强制) 对于小数点位数大于2位的,用上面的函数没问题,但是如果小于2位的,比如: changeTwoDecimal(3.1),将返回 3.1,如果你一定需要3.10这样的格式,那么需要下面的这个函数: function changeTwoDecimal_f(x) { var f_x = parseFloat(x); if (isNaN(f_x)) { alert('function:changeTwoDecimal->parameter error'); return false; } var f_x = Math.round(x*100)/100; var s_x = f_x.toString(); var pos_decimal = s_x.indexOf('.'); if (pos_decimal < 0) { pos_decimal = s_x.length; s_x += '.'; } while (s_x.length <= pos_decimal + 2) { s_x += '0'; } return s_x; }
#992
$num = 10.4567; //第一种:利用round()对浮点数进行四舍五入 echo round($num,2); //10.46 //第二种:利用sprintf格式化字符串 $format_num = sprintf("%.2f",$num); echo $format_num; //10.46 //第三种:利用千位分组来格式化数字的函数number_format() echo number_format($num, 2); //10.46 //或者如下 echo number_format($num, 2, '.', ''); //10/46
#993
#994
#995
#996
<a target="_blank" href="http://wpa.qq.com/msgrd?v=3&uin=2500152288&site=qq&menu=yes"><img border="0" src="http://wpa.qq.com/pa?p=2:515807823:53" alt="点击这里给我发消息" title="点击这里给我发消息"/></a>
#997
1. 获取选中项: 获取选中项的Value值: $('select#sel option:selected').val(); 或者 $('select#sel').find('option:selected').val(); 获取选中项的Text值: $('select#seloption:selected').text(); 或者 $('select#sel').find('option:selected').text(); 2. 获取当前选中项的索引值: $('select#sel').get(0).selectedIndex; 3. 获取当前option的最大索引值: $('select#sel option:last').attr("index") 4. 获取DropdownList的长度: $('select#sel')[0].options.length; 或者 $('select#sel').get(0).options.length; 5. 设置第一个option为选中值: $('select#sel option:first').attr('selected','true') 或者 $('select#sel')[0].selectedIndex = 0; 6. 设置最后一个option为选中值:
#998
1.获取选中值,三种方法都可以: $('input:radio:checked').val(); $("input[type='radio']:checked").val(); $("input[name='rd']:checked").val(); 2.设置第一个Radio为选中值: $('input:radio:first').attr('checked', 'checked'); 或者 $('input:radio:first').attr('checked', 'true'); 注:attr("checked",'checked')= attr("checked", 'true')= attr("checked", true) 3.设置最后一个Radio为选中值: $('input:radio:last').attr('checked', 'checked'); 或者 $('input:radio:last').attr('checked', 'true'); 4.根据索引值设置任意一个radio为选中值: $('input:radio').eq(索引值).attr('checked', 'true');索引值=0,1,2.... 或者 $('input:radio').slice(1,2).attr('checked', 'true'); 5.根据Value值设置Radio为选中值 $("input:radio[value=http://www.2cto.com/kf/201110/'rd2']").attr('checked','true'); 或者 $("input[value=http://www.2cto.com/kf/201110/'rd2']").attr('checked','true'); 6.删除Value值为rd2的Radio $("input:radio[value=http://www.2cto.com/kf/201110/'rd2']").remove(); 7.删除第几个Radio $("input:radio").eq(索引值).remove();索引值=0,1,2.... 如删除第3个Radio:$("input:radio").eq(2).remove(); 8.遍历Radio $('input:radio').each(function(index,domEle){ //写入代码 });
#999
#1000
/** * 通过oauth2.0获取openid * 若只需要获取用户openid,调用次方法,若需要获取用户所有信息,请调用getOpenidByOauth2()方法 */ protected function getOpenidByOauth() { $wx_info = $this->wx_info; // 获取openid if (!$openid) { if (!isset($_GET['code'])) { $customeUrl = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; $scope = 'snsapi_base'; $oauthUrl = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . $wx_info['appid'] . '&redirect_uri=' . urlencode($customeUrl) . '&response_type=code&scope=' . $scope . '&state=oauth#wechat_redirect'; header('Location:' . $oauthUrl); exit(); }else{ $url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $wx_info['appid'] . '&secret=' . $wx_info['appsecret'] . '&code=' . $_GET['code'] . '&grant_type=authorization_code'; $result = json_decode(curlGet($url), true); $openid = $result['openid']; } }
#1001
<object classid="clsid27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="100%" height="100%" align="center"> <param name="movie" value="../Public/flash/jinti.swf"> <param name="quality" value="high"> <param name="wmode" value="transparent"> <!--这里代码可使Flash背景透明 --> <embed src="../Public/flash/jinti.swf" width="100%" height="100%" align="center" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"> </embed> </object>
#1002
<select id="selectID" > <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> </select>
<script language="javascript"> $(document).ready(function() { //绑定下拉框change事件,当下来框改变时调用 SelectChange()方法 $("#selectID").change(function() { SelectChange(); }); }) function SelectChange() { //获取下拉框选中项的text属性值 var selectText = $("#selectID").find("option:selected").text(); alert(selectText); //获取下拉框选中项的value属性值 var selectValue = $("#selectID").val(); alert(selectValue); //获取下拉框选中项的index属性值 var selectIndex = $("#selectID").get(0).selectedIndex; alert(selectIndex); ////获取下拉框最大的index属性值 var selectMaxIndex = $("#selectID option:last").attr("index"); alert(selectMaxIndex); } function aa() { //设置下拉框index属性为5的选项 选中 $("#selectID").get(0).selectedIndex = 5; } function bb() { //设置下拉框value属性为4的选项 选中 $("#selectID").val(4); } function cc() { //设置下拉框text属性为5的选项 选中 $("#selectID option[text=5]").attr("selected", "selected"); $("#yyt option:contains('5')").attr("selected", true); } function dd() { //在下拉框最后添加一个选项 $("#selectID").append("<option value='7'>7</option>"); } function ee() { //在下拉框最前添加一个选项 $("#selectID").prepend("<option value='0'>0</option>") } function ff() { //移除下拉框最后一个选项 $("#selectID option:last").remove(); } function gg() { //移除下拉框 index属性为1的选项 $("#selectID option[index=1]").remove(); } function hh() { //移除下拉框 value属性为4的选项 $("#selectID option[value=4]").remove(); } function ii() { //移除下拉框 text属性为5的选项 $("#selectID option[text=5]").remove(); } </script>
#1003
:-moz-placeholder { /* Mozilla Firefox 4 to 18 */ color: #000; opacity:1; } ::-moz-placeholder { /* Mozilla Firefox 19+ */ color: #000;opacity:1; } input:-ms-input-placeholder{ color: #000;opacity:1; } input::-webkit-input-placeholder{ color: #000;opacity:1; }
input::-webkit-input-placeholder { /* WebKit browsers*/ color:#999;font-size:14px; } input:-moz-placeholder { /* Mozilla Firefox 4 to 18*/ color:#999;font-size:14px; } input::-moz-placeholder { /* Mozilla Firefox 19+*/ color:#999;font-size:14px; } input:-ms-input-placeholder { /* Internet Explorer 10+*/ color:#999;font-size:14px; }
#1004
删除onclick属性:$(“a”).removeAttr(“onclick”); 设置onclick属性:$(“a”).attr(“onclick”,”test();”);
#1005
$token = s("access_token"); if($token){ //重新取得token; } return $token;
#1006
#1007
-webkit-tap-highlight-color:rgba(0,0,0,0)
a{-webkit-tap-highlight-color:rgba(255,0,0,0);outline:none;}
确定要清除编辑框内容吗?
该删除操作将不可恢复。
删除 取消
激活Windows
转到"设置"以激活Windows。
#989
#990
If not me,who?
#991
四舍五入
以下处理结果会四舍五入:
var num =2.446242342; num = num.toFixed(2); // 输出结果为 2.45不四舍五入
以下处理结果不会四舍五入:
第一种,先把小数边整数:
Math.floor(15.7784514000 * 100) / 100 // 输出结果为 15.77第二种,当作字符串,使用正则匹配:
Number(15.7784514000.toString().match(/^\d+(?:\.\d{0,2})?/)) // 输出结果为 15.77,不能用于整数如 10 必须写为10.0000注意:如果是负数,请先转换为正数再计算,最后转回负数
1.丢弃小数部分,保留整数部分
parseInt(5/2)2.向上取整,有小数就整数部分加1
Math.ceil(5/2)3,四舍五入.
Math.round(5/2)4,向下取整
Math.floor(5/2)<script> var num=22.127456; alert( Math.round(num*100)/100); </script>功能:将浮点数四舍五入,取小数点后2位,如果不足2位则补0,
这个函数返回的是字符串的格式用法:changeTwoDecimal(3.1415926)返回3.14 changeTwoDecimal(3.1)返回3.10
function changeTwoDecimal(x) { var f_x = parseFloat(x); if (isNaN(f_x)) { alert('function:changeTwoDecimal->parameter error'); return false; } var f_x = Math.round(x*100)/100; return f_x; } 功能:将浮点数四舍五入,取小数点后2位 用法:changeTwoDecimal(3.1415926) 返回 3.14 changeTwoDecimal(3.1475926) 返回 3.15 js保留2位小数(强制) 对于小数点位数大于2位的,用上面的函数没问题,但是如果小于2位的,比如: changeTwoDecimal(3.1),将返回 3.1,如果你一定需要3.10这样的格式,那么需要下面的这个函数: function changeTwoDecimal_f(x) { var f_x = parseFloat(x); if (isNaN(f_x)) { alert('function:changeTwoDecimal->parameter error'); return false; } var f_x = Math.round(x*100)/100; var s_x = f_x.toString(); var pos_decimal = s_x.indexOf('.'); if (pos_decimal < 0) { pos_decimal = s_x.length; s_x += '.'; } while (s_x.length <= pos_decimal + 2) { s_x += '0'; } return s_x; }#992
$num = 10.4567; //第一种:利用round()对浮点数进行四舍五入 echo round($num,2); //10.46 //第二种:利用sprintf格式化字符串 $format_num = sprintf("%.2f",$num); echo $format_num; //10.46 //第三种:利用千位分组来格式化数字的函数number_format() echo number_format($num, 2); //10.46 //或者如下 echo number_format($num, 2, '.', ''); //10/46#993
(1)Mysql和Mysqli的区别是:
mysqli连接是永久连接,而mysql是非永久连接。
mysql连接:每当第二次使用的时候,都会重新打开一个新的进程。
mysqli连接:一直都只使用同一个进程。
好处:这样就可以很大程度的减轻服务器压力。
(2)mysql_connect与mysql_pconnect与mysqli_connect:
mysql_pconnect打开的连接不会关闭(即使调用mysql_close也不会关闭,因为对其无效),
类似于连接缓冲池,如果下次有来自于同一个机器的同一个用户名
对同一个数据库的连接,php会自动使用上次已经建立的连接,而不需要再重新建立一个。?
好处:是省去了每次与建立连接的开销,
坏处:是需要浪费一些,占用一些连接,
所以如果用户访问量大的时候会出现错误,要把的max_connections参数改大一点,?或者使用mysql_connect()就解决问题。
connect与pconnect不会带来功能的差异,?只有性能上的差别.
一般php有俩种运行模式,?一是作为cgi运行,?二是作为apache的模块运行.?
作为cgi的时候connect跟pconnect没什么不同,?因为每次cgi进行运行结束后都会被销毁清理掉资源.
#994
1、 最多创建3个一级菜单,一级菜单名称名字不多于4个汉字或8个字母。
2、 每个一级菜单下的子菜单最多可创建5个,子菜单名称名字不多于8个汉字或16个字母。
温馨提示:编辑中的菜单不会马上被用户看到,发布成功后,会在24小时后在手机端同步显示,粉丝不会收到更新提示,若多次编辑,以最后一次保存为准。
#995
#996
QQ在线客服 qq推广 QQ通讯组件
<a target="_blank" href="http://wpa.qq.com/msgrd?v=3&uin=2500152288&site=qq&menu=yes"><img border="0" src="http://wpa.qq.com/pa?p=2:515807823:53" alt="点击这里给我发消息" title="点击这里给我发消息"/></a>该段代码,即能嵌入到你的页面,实现在线交流的功能。
#997
1. 获取选中项: 获取选中项的Value值: $('select#sel option:selected').val(); 或者 $('select#sel').find('option:selected').val(); 获取选中项的Text值: $('select#seloption:selected').text(); 或者 $('select#sel').find('option:selected').text(); 2. 获取当前选中项的索引值: $('select#sel').get(0).selectedIndex; 3. 获取当前option的最大索引值: $('select#sel option:last').attr("index") 4. 获取DropdownList的长度: $('select#sel')[0].options.length; 或者 $('select#sel').get(0).options.length; 5. 设置第一个option为选中值: $('select#sel option:first').attr('selected','true') 或者 $('select#sel')[0].selectedIndex = 0; 6. 设置最后一个option为选中值:#998
1.获取选中值,三种方法都可以: $('input:radio:checked').val(); $("input[type='radio']:checked").val(); $("input[name='rd']:checked").val(); 2.设置第一个Radio为选中值: $('input:radio:first').attr('checked', 'checked'); 或者 $('input:radio:first').attr('checked', 'true'); 注:attr("checked",'checked')= attr("checked", 'true')= attr("checked", true) 3.设置最后一个Radio为选中值: $('input:radio:last').attr('checked', 'checked'); 或者 $('input:radio:last').attr('checked', 'true'); 4.根据索引值设置任意一个radio为选中值: $('input:radio').eq(索引值).attr('checked', 'true');索引值=0,1,2.... 或者 $('input:radio').slice(1,2).attr('checked', 'true'); 5.根据Value值设置Radio为选中值 $("input:radio[value=http://www.2cto.com/kf/201110/'rd2']").attr('checked','true'); 或者 $("input[value=http://www.2cto.com/kf/201110/'rd2']").attr('checked','true'); 6.删除Value值为rd2的Radio $("input:radio[value=http://www.2cto.com/kf/201110/'rd2']").remove(); 7.删除第几个Radio $("input:radio").eq(索引值).remove();索引值=0,1,2.... 如删除第3个Radio:$("input:radio").eq(2).remove(); 8.遍历Radio $('input:radio').each(function(index,domEle){ //写入代码 });#999
#1000
/** * 通过oauth2.0获取openid * 若只需要获取用户openid,调用次方法,若需要获取用户所有信息,请调用getOpenidByOauth2()方法 */ protected function getOpenidByOauth() { $wx_info = $this->wx_info; // 获取openid if (!$openid) { if (!isset($_GET['code'])) { $customeUrl = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; $scope = 'snsapi_base'; $oauthUrl = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . $wx_info['appid'] . '&redirect_uri=' . urlencode($customeUrl) . '&response_type=code&scope=' . $scope . '&state=oauth#wechat_redirect'; header('Location:' . $oauthUrl); exit(); }else{ $url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $wx_info['appid'] . '&secret=' . $wx_info['appsecret'] . '&code=' . $_GET['code'] . '&grant_type=authorization_code'; $result = json_decode(curlGet($url), true); $openid = $result['openid']; } }#1001
<object classid="clsid27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="100%" height="100%" align="center"> <param name="movie" value="../Public/flash/jinti.swf"> <param name="quality" value="high"> <param name="wmode" value="transparent"> <!--这里代码可使Flash背景透明 --> <embed src="../Public/flash/jinti.swf" width="100%" height="100%" align="center" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"> </embed> </object>#1002
下拉框:
<select id="selectID" > <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> </select>下面是对下拉框的基本操作:
<script language="javascript"> $(document).ready(function() { //绑定下拉框change事件,当下来框改变时调用 SelectChange()方法 $("#selectID").change(function() { SelectChange(); }); }) function SelectChange() { //获取下拉框选中项的text属性值 var selectText = $("#selectID").find("option:selected").text(); alert(selectText); //获取下拉框选中项的value属性值 var selectValue = $("#selectID").val(); alert(selectValue); //获取下拉框选中项的index属性值 var selectIndex = $("#selectID").get(0).selectedIndex; alert(selectIndex); ////获取下拉框最大的index属性值 var selectMaxIndex = $("#selectID option:last").attr("index"); alert(selectMaxIndex); } function aa() { //设置下拉框index属性为5的选项 选中 $("#selectID").get(0).selectedIndex = 5; } function bb() { //设置下拉框value属性为4的选项 选中 $("#selectID").val(4); } function cc() { //设置下拉框text属性为5的选项 选中 $("#selectID option[text=5]").attr("selected", "selected"); $("#yyt option:contains('5')").attr("selected", true); } function dd() { //在下拉框最后添加一个选项 $("#selectID").append("<option value='7'>7</option>"); } function ee() { //在下拉框最前添加一个选项 $("#selectID").prepend("<option value='0'>0</option>") } function ff() { //移除下拉框最后一个选项 $("#selectID option:last").remove(); } function gg() { //移除下拉框 index属性为1的选项 $("#selectID option[index=1]").remove(); } function hh() { //移除下拉框 value属性为4的选项 $("#selectID option[value=4]").remove(); } function ii() { //移除下拉框 text属性为5的选项 $("#selectID option[text=5]").remove(); } </script>option[text=5]这种?为什么我不行,而且网上也有一些说不行的。但是也有很多这样子写的,这到底是误导还是?
#1003
:-moz-placeholder { /* Mozilla Firefox 4 to 18 */ color: #000; opacity:1; } ::-moz-placeholder { /* Mozilla Firefox 19+ */ color: #000;opacity:1; } input:-ms-input-placeholder{ color: #000;opacity:1; } input::-webkit-input-placeholder{ color: #000;opacity:1; }也可以给这个属性加字体
input::-webkit-input-placeholder { /* WebKit browsers*/ color:#999;font-size:14px; } input:-moz-placeholder { /* Mozilla Firefox 4 to 18*/ color:#999;font-size:14px; } input::-moz-placeholder { /* Mozilla Firefox 19+*/ color:#999;font-size:14px; } input:-ms-input-placeholder { /* Internet Explorer 10+*/ color:#999;font-size:14px; }#1004
删除onclick属性:$(“a”).removeAttr(“onclick”); 设置onclick属性:$(“a”).attr(“onclick”,”test();”);#1005
##################正解################
这种情况跟这个库没有直接关系。
请检查一下是否有别的地方同时请求了access token,导致微信服务器发放了新的access token给别人。尤其是dev环境
##################正解################
查了好久,先发现下载到本地的文件size很小,只有100来字节,我以为只有头文件,老大说,你要么看看这文件的二进制流是什么,打开一看原来是一个error信息,是JSON字符串
{"errcode":40001,"errmsg":"invalid credential, access_token is invalid or not latest hint: [2HYQIa0031ge10] "}
看了下错误code,是access_token过期。
但是官网里说 token默认是7200秒过期,为啥那么快?结果后来百度到,如果有第二地方也请求同一个token的话,那么第一个token会在5分钟之内过期。这也就说明了,为什么在我搭建好第二个环境的时候,老环境就出现了这种问题。因为这两个环境用的是同一个AppID和AppSecret来取得的
access_token,而这个access_token的取得并不是在服务器启动的时候,而且是在需要调用接口的画面初期化的时候去取得的。把取得的token放在s()全局缓存变量中,3600秒过期,方法是
$token = s("access_token"); if($token){ //重新取得token; } return $token;所以就一直使用过期的token;一旦token过期,就无法调用js接口了。
#1006
#1007
在手机上(iphone)点击按钮的时候,屏幕总会闪动一下,这让页面看起来很不友好也不流畅。解决方案加了一句css就解决了:
-webkit-tap-highlight-color:rgba(0,0,0,0)//webkit是苹果浏览器引擎,tap点击,highlight背景高亮,color颜色,颜色用数值调节。
原因如下:
在移动端上,有事件监听的元素被点击的时候会被高亮显示,而-webkit-tap-highlight-color属性会在当用户点击iOS的Safari浏览器中的链接或JavaScript的可点击的元素时,覆盖显示的高亮颜色。
该属性可以只设置透明度。如果未设置透明度,iOS Safari使用默认的透明度。当透明度设为0,则会禁用此属性;当透明度设为1,元素在点击时不可见。
a{-webkit-tap-highlight-color:rgba(255,0,0,0);outline:none;}ios微信点击超链接,去掉半透明黑色框效果
iOS微信点击超链接或是图片超链接,总是弹出一层黑色遮罩层,在a标签上添加style='-webkit-tap-highlight-color:rgba(255,0,0,0);'即可