阿当的博客











{五月 28, 2008}   php中,将string转变成date

    可以用strtotime()方法将字符串变成date,这个方法返回的是时间戳,再用date()格式化一下就ok了.

例子如下:

$fromDate = date("Y-m-d",strtotime($_REQUEST["from_date"]));



{五月 23, 2008}   [转载 js]城市级联菜单

这个用得很多了.觉得用ajax方法太麻烦了,还要建数据库什么的.今天在网上扒了个纯js的,所有数据都事先写好在js数组中.其实这样多方便啊,干干净净的.

好了,下面贴关键代码:

<select name="provid" id="provid" onchange="chsel();">
      <option value="0" selected="selected">– 选择省份 –</option>
      <option value="1">北京</option>
      <option value="2">上海</option>
      <option value="3">天津</option>
      <option value="4">广东</option>
      <option value="5">福建</option>
      <option value="8">海南</option>
      <option value="9">安徽</option>
      <option value="10">贵州</option>
      <option value="11">甘肃</option>
      <option value="12">广西</option>
      <option value="13">河北</option>
      <option value="14">河南</option>
      <option value="15">黑龙江</option>
      <option value="16">湖北</option>
      <option value="17">湖南</option>
      <option value="18">吉林</option>
      <option value="19">江苏</option>
      <option value="20">江西</option>
      <option value="21">辽宁</option>
      <option value="22">内蒙古</option>
      <option value="23">宁夏</option>
      <option value="24">青海</option>
      <option value="25">山东</option>
      <option value="26">山西</option>
      <option value="27">陕西</option>
      <option value="28">四川</option>
      <option value="29">西藏</option>
      <option value="30">新疆</option>
      <option value="31">云南</option>
      <option value="32">浙江</option>
      <option value="33">重庆</option>
      <option value="34">香港</option>
      <option value="35">台湾</option>
      <option value="36">澳门</option>
      </select><br>
      <select name="cityid" id="cityid">
      <option value="0" selected="selected">– 选择城市 –</option>
   </select>

<script type="text/javascript">

// JavaScript Document
var selects=[];
selects[0]=new Array(
new Option(‘—-’,'0′));
selects['1']=new Array(
new Option(‘北京’,'北京’));
selects['2']=new Array(
new Option(‘上海’,'上海’));
selects['3']=new Array(
new Option(‘天津’,'天津’));
selects['4']=new Array(
new Option(‘您所在的地区’,'0′),
new Option(‘广州市’,'广州市’),
new Option(‘深圳市’,'深圳市’),
new Option(‘珠海市’,'珠海市’),
new Option(‘汕头市’,'汕头市’),
new Option(‘韶关市’,'韶关市’),
new Option(‘河源市’,'河源市’),
new Option(‘梅州市’,'梅州市’),
new Option(‘汕尾市’,'汕尾市’),
new Option(‘东莞市’,'东莞市’),
new Option(‘中山市’,'中山市’),
new Option(‘江门市’,'江门市’),
new Option(‘佛山市’,'佛山市’),
new Option(‘阳江市’,'阳江市’),
new Option(‘湛江市’,'湛江市’),
new Option(‘茂名市’,'茂名市’),
new Option(‘肇庆市’,'肇庆市’),
new Option(‘清远市’,'清远市’),
new Option(‘潮州市’,'潮州市’),
new Option(‘揭阳市’,'揭阳市’),
new Option(‘云浮市’,'云浮市’));
selects['5']=new Array(
new Option(‘您所在的地区’,'0′),
new Option(‘福州市’,'福州市’),
new Option(‘厦门市’,'厦门市’),
new Option(‘三明市’,'三明市’),
new Option(‘莆田市’,'莆田市’),
new Option(‘泉州市’,'泉州市’),
new Option(‘漳州市’,'漳州市’),
new Option(‘南平市’,'南平市’),
new Option(‘龙岩市’,'龙岩市’),
new Option(‘宁德市’,'宁德市’));
selects['8']=new Array(
new Option(‘您所在的地区’,'0′),
new Option(‘海口市’,'海口市’),
new Option(‘三亚市’,'三亚市’),
new Option(‘琼山市’,'琼山市’),
new Option(‘文昌市’,'文昌市’),
new Option(‘琼海市’,'琼海市’),
new Option(‘万宁市’,'万宁市’),
new Option(‘五指山市’,'五指山市’),
new Option(‘东方市’,'东方市’),
new Option(‘儋州市’,'儋州市’),
new Option(‘临高县’,'临高县’),
new Option(‘澄迈县’,'澄迈县’),
new Option(‘定安县’,'定安县’),
new Option(‘屯昌县’,'屯昌县’),
new Option(‘昌江县’,'昌江县’),
new Option(‘白沙县’,'白沙县’),
new Option(‘琼中县’,'琼中县’),
new Option(‘陵水县’,'陵水县’),
new Option(‘保亭县’,'保亭县’),
new Option(‘乐东县’,'乐东县’));
selects['9']=new Array(
new Option(‘您所在的地区’,'0′),
new Option(‘合肥市’,'合肥市’),
new Option(‘芜湖市’,'芜湖市’),
new Option(‘蚌埠市’,'蚌埠市’),
new Option(‘淮南市’,'淮南市’),
new Option(‘马鞍山市’,'马鞍山市’),
new Option(‘淮北市’,'淮北市’),
new Option(‘铜陵市’,'铜陵市’),
new Option(‘安庆市’,'安庆市’),
new Option(‘黄山市’,'黄山市’),
new Option(‘滁州市’,'滁州市’),
new Option(‘阜阳市’,'阜阳市’),
new Option(‘宿州市’,'宿州市’),
new Option(‘巢湖市’,'巢湖市’),
new Option(‘六安市’,'六安市’),
new Option(‘亳州市’,'亳州市’),
new Option(‘池州市’,'池州市’),
new Option(‘宣城市’,'宣城市’));
selects['10']=new Array(
new Option(‘您所在的地区’,'0′),
new Option(‘贵阳市’,'贵阳市’),
new Option(‘六盘水市’,'六盘水市’),
new Option(‘遵义市’,'遵义市’),
new Option(‘安顺市’,'安顺市’),
new Option(‘铜仁地区’,'铜仁地区’),
new Option(‘毕节地区’,'毕节地区’),
new Option(‘黔西南州’,'黔西南州’),
new Option(‘黔东南州’,'黔东南州’),
new Option(‘黔南州’,'黔南州’));
selects['11']=new Array(
new Option(‘您所在的地区’,'0′),
new Option(‘兰州市’,'兰州市’),
new Option(‘金昌市’,'金昌市’),
new Option(‘白银市’,'白银市’),
new Option(‘天水市’,'天水市’),
new Option(‘嘉峪关市’,'嘉峪关市’),
new Option(‘武威市’,'武威市’),
new Option(‘张掖市’,'张掖市’),
new Option(‘平凉市’,'平凉市’),
new Option(‘酒泉市’,'酒泉市’),
new Option(‘庆阳市’,'庆阳市’),
new Option(‘定西地区’,'定西地区’),
new Option(‘陇南地区’,'陇南地区’),
new Option(‘甘南州’,'甘南州’),
new Option(‘临夏回族自治州’,'临夏回族自治州’));
selects['12']=new Array(
new Option(‘您所在的地区’,'0′),
new Option(‘南宁市’,'南宁市’),
new Option(‘柳州市’,'柳州市’),
new Option(‘桂林市’,'桂林市’),
new Option(‘梧州市’,'梧州市’),
new Option(‘北海市’,'北海市’),
new Option(‘防城港市’,'防城港市’),
new Option(‘钦州市’,'钦州市’),
new Option(‘贵港市’,'贵港市’),
new Option(‘玉林市’,'玉林市’),
new Option(‘百色市’,'百色市’),
new Option(‘贺州市’,'贺州市’),
new Option(‘河池市’,'河池市’),
new Option(‘来宾市’,'来宾市’),
new Option(‘崇左市’,'崇左市’));
selects['13']=new Array(
new Option(‘您所在的地区’,'0′),
new Option(‘石家庄市’,'石家庄市’),
new Option(‘唐山市’,'唐山市’),
new Option(‘秦皇岛市’,'秦皇岛市’),
new Option(‘邯郸市’,'邯郸市’),
new Option(‘邢台市’,'邢台市’),
new Option(‘保定市’,'保定市’),
new Option(‘张家口市’,'张家口市’),
new Option(‘承德市’,'承德市’),
new Option(‘廊坊市’,'廊坊市’),
new Option(‘衡水市’,'衡水市’));
selects['14']=new Array(
new Option(‘您所在的地区’,'0′),
new Option(‘郑州市’,'郑州市’),
new Option(‘开封市’,'开封市’),
new Option(‘洛阳市’,'洛阳市’),
new Option(‘平顶山市’,'平顶山市’),
new Option(‘焦作市’,'焦作市’),
new Option(‘鹤壁市’,'鹤壁市’),
new Option(‘新乡市’,'新乡市’),
new Option(‘安阳市’,'安阳市’),
new Option(‘濮阳市’,'濮阳市’),
new Option(‘许昌市’,'许昌市’),
new Option(‘漯河市’,'漯河市’),
new Option(‘三门峡市’,'三门峡市’),
new Option(‘南阳市’,'南阳市’),
new Option(‘商丘市’,'商丘市’),
new Option(‘信阳市’,'信阳市’),
new Option(‘周口市’,'周口市’),
new Option(‘驻马店市’,'驻马店市’),
new Option(‘济源市’,'济源市’));
selects['15']=new Array(
new Option(‘您所在的地区’,'0′),
new Option(‘哈尔滨市’,'哈尔滨市’),
new Option(‘齐齐哈尔市’,'齐齐哈尔市’),
new Option(‘鹤岗市’,'鹤岗市’),
new Option(‘双鸭山市’,'双鸭山市’),
new Option(‘鸡西市’,'鸡西市’),
new Option(‘大庆市’,'大庆市’),
new Option(‘伊春市’,'伊春市’),
new Option(‘牡丹江市’,'牡丹江市’),
new Option(‘佳木斯市’,'佳木斯市’),
new Option(‘七台河市’,'七台河市’),
new Option(‘黑河市’,'黑河市’),
new Option(‘绥化市’,'绥化市’),
new Option(‘大兴安岭地区’,'大兴安岭地区’));
selects['16']=new Array(
new Option(‘您所在的地区’,'0′),
new Option(‘武汉市’,'武汉市’),
new Option(‘黄石市’,'黄石市’),
new Option(‘襄樊市’,'襄樊市’),
new Option(‘十堰市’,'十堰市’),
new Option(‘荆州市’,'荆州市’),
new Option(‘宜昌市’,'宜昌市’),
new Option(‘荆门市’,'荆门市’),
new Option(‘鄂州市’,'鄂州市’),
new Option(‘孝感市’,'孝感市’),
new Option(‘黄冈市’,'黄冈市’),
new Option(‘咸宁市’,'咸宁市’),
new Option(‘随州市’,'随州市’),
new Option(‘恩施州’,'恩施州’),
new Option(‘仙桃市’,'仙桃市’),
new Option(‘天门市’,'天门市’),
new Option(‘潜江市’,'潜江市’),
new Option(‘神农架林区’,'神农架林区’));
selects['17']=new Array(
new Option(‘您所在的地区’,'0′),
new Option(‘长沙市’,'长沙市’),
new Option(‘株洲市’,'株洲市’),
new Option(‘湘潭市’,'湘潭市’),
new Option(‘衡阳市’,'衡阳市’),
new Option(‘邵阳市’,'邵阳市’),
new Option(‘岳阳市’,'岳阳市’),
new Option(‘常德市’,'常德市’),
new Option(‘张家界市’,'张家界市’),
new Option(‘益阳市’,'益阳市’),
new Option(‘郴州市’,'郴州市’),
new Option(‘永州市’,'永州市’),
new Option(‘怀化市’,'怀化市’),
new Option(‘娄底市’,'娄底市’),
new Option(‘湘西州’,'湘西州’));
selects['18']=new Array(
new Option(‘您所在的地区’,'0′),
new Option(‘长春市’,'长春市’),
new Option(‘吉林市’,'吉林市’),
new Option(‘四平市’,'四平市’),
new Option(‘辽源市’,'辽源市’),
new Option(‘通化市’,'通化市’),
new Option(‘白山市’,'白山市’),
new Option(‘延边州’,'延边州’));
selects['19']=new Array(
new Option(‘您所在的地区’,'0′),
new Option(‘南京市’,'南京市’),
new Option(‘徐州市’,'徐州市’),
new Option(‘连云港市’,'连云港市’),
new Option(‘淮安市’,'淮安市’),
new Option(‘宿迁市’,'宿迁市’),
new Option(‘盐城市’,'盐城市’),
new Option(‘扬州市’,'扬州市’),
new Option(‘泰州市’,'泰州市’),
new Option(‘南通市’,'南通市’),
new Option(‘镇江市’,'镇江市’),
new Option(‘常州市’,'常州市’),
new Option(‘无锡市’,'无锡市’),
new Option(‘苏州市’,'苏州市’));
selects['20']=new Array(
new Option(‘您所在的地区’,'0′),
new Option(‘南昌市’,'南昌市’),
new Option(‘景德镇市’,'景德镇市’),
new Option(‘萍乡市’,'萍乡市’),
new Option(‘九江市’,'九江市’),
new Option(‘新余市’,'新余市’),
new Option(‘鹰潭市’,'鹰潭市’),
new Option(‘赣州市’,'赣州市’),
new Option(‘吉安市’,'吉安市’),
new Option(‘宜春市’,'宜春市’),
new Option(‘抚州市’,'抚州市’),
new Option(‘上饶市’,'上饶市’));
selects['21']=new Array(
new Option(‘您所在的地区’,'0′),
new Option(‘沈阳市’,'沈阳市’),
new Option(‘大连市’,'大连市’),
new Option(‘鞍山市’,'鞍山市’),
new Option(‘抚顺市’,'抚顺市’),
new Option(‘本溪市’,'本溪市’),
new Option(‘丹东市’,'丹东市’),
new Option(‘锦州市’,'锦州市’),
new Option(‘葫芦岛市’,'葫芦岛市’),
new Option(‘营口市’,'营口市’),
new Option(‘盘锦市’,'盘锦市’),
new Option(‘阜新市’,'阜新市’),
new Option(‘辽阳市’,'辽阳市’),
new Option(‘铁岭市’,'铁岭市’),
new Option(‘朝阳市’,'朝阳市’));
selects['22']=new Array(
new Option(‘您所在的地区’,'0′),
new Option(‘呼和浩特市’,'呼和浩特市’),
new Option(‘包头市’,'包头市’),
new Option(‘乌海市’,'乌海市’),
new Option(‘赤峰市’,'赤峰市’),
new Option(‘鄂尔多斯市’,'鄂尔多斯市’),
new Option(‘呼伦贝尔市’,'呼伦贝尔市’),
new Option(‘乌兰察布盟’,'乌兰察布盟’),
new Option(‘锡林郭勒盟’,'锡林郭勒盟’),
new Option(‘阿拉善盟’,'阿拉善盟’),
new Option(‘兴安盟’,'兴安盟’),
new Option(‘通辽市’,'通辽市’),
new Option(‘巴彦淖尔盟’,'巴彦淖尔盟’));
selects['23']=new Array(
new Option(‘您所在的地区’,'0′),
new Option(‘银川市’,'银川市’),
new Option(‘石嘴山市’,'石嘴山市’),
new Option(‘吴忠市’,'吴忠市’),
new Option(‘固原市’,'固原市’));
selects['24']=new Array(
new Option(‘您所在的地区’,'0′),
new Option(‘西宁市’,'西宁市’),
new Option(‘海东地区’,'海东地区’),
new Option(‘海北州’,'海北州’),
new Option(‘海南州’,'海南州’),
new Option(‘果洛州’,'果洛州’),
new Option(‘玉树州’,'玉树州’),
new Option(‘海西州’,'海西州’));
selects['25']=new Array(
new Option(‘您所在的地区’,'0′),
new Option(‘济南市’,'济南市’),
new Option(‘青岛市’,'青岛市’),
new Option(‘淄博市’,'淄博市’),
new Option(‘枣庄市’,'枣庄市’),
new Option(‘东营市’,'东营市’),
new Option(‘潍坊市’,'潍坊市’),
new Option(‘烟台市’,'烟台市’),
new Option(‘威海市’,'威海市’),
new Option(‘济宁市’,'济宁市’),
new Option(‘泰安市’,'泰安市’),
new Option(‘日照市’,'日照市’),
new Option(‘莱芜市’,'莱芜市’),
new Option(‘临沂市’,'临沂市’),
new Option(‘德州市’,'德州市’),
new Option(‘聊城市’,'聊城市’),
new Option(‘滨州市’,'滨州市’),
new Option(‘菏泽市’,'菏泽市’));
selects['26']=new Array(
new Option(‘您所在的地区’,'0′),
new Option(‘太原市’,'太原市’),
new Option(‘大同市’,'大同市’),
new Option(‘阳泉市’,'阳泉市’),
new Option(‘长治市’,'长治市’),
new Option(‘晋城市’,'晋城市’),
new Option(‘朔州市’,'朔州市’),
new Option(‘晋中市’,'晋中市’),
new Option(‘运城市’,'运城市’),
new Option(‘忻州市’,'忻州市’),
new Option(‘临汾市’,'临汾市’),
new Option(‘吕梁地区’,'吕梁地区’));
selects['27']=new Array(
new Option(‘您所在的地区’,'0′),
new Option(‘西安市’,'西安市’),
new Option(‘铜川市’,'铜川市’),
new Option(‘宝鸡市’,'宝鸡市’),
new Option(‘咸阳市’,'咸阳市’),
new Option(‘渭南市’,'渭南市’),
new Option(‘延安市’,'延安市’),
new Option(‘汉中市’,'汉中市’),
new Option(‘榆林市’,'榆林市’),
new Option(‘安康市’,'安康市’),
new Option(‘商洛市’,'商洛市’));
selects['28']=new Array(
new Option(‘您所在的地区’,'0′),
new Option(‘成都市’,'成都市’),
new Option(‘自贡市’,'自贡市’),
new Option(‘攀枝花市’,'攀枝花市’),
new Option(‘泸州市’,'泸州市’),
new Option(‘德阳市’,'德阳市’),
new Option(‘绵阳市’,'绵阳市’),
new Option(‘广元市’,'广元市’),
new Option(‘遂宁市’,'遂宁市’),
new Option(‘内江市’,'内江市’),
new Option(‘乐山市’,'乐山市’),
new Option(‘南充市’,'南充市’),
new Option(‘宜宾市’,'宜宾市’),
new Option(‘广安市’,'广安市’),
new Option(‘达州市’,'达州市’),
new Option(‘眉山市’,'眉山市’),
new Option(‘雅安市’,'雅安市’),
new Option(‘巴中市’,'巴中市’),
new Option(‘资阳市’,'资阳市’),
new Option(‘阿坝州’,'阿坝州’),
new Option(‘甘孜州’,'甘孜州’),
new Option(‘凉山州’,'凉山州’));
selects['29']=new Array(
new Option(‘您所在的地区’,'0′),
new Option(‘拉萨市’,'拉萨市’),
new Option(‘那曲地区’,'那曲地区’),
new Option(‘昌都地区’,'昌都地区’),
new Option(‘山南地区’,'山南地区’),
new Option(‘日喀则地区’,'日喀则地区’),
new Option(‘阿里地区’,'阿里地区’),
new Option(‘林芝地区’,'林芝地区’));
selects['30']=new Array(
new Option(‘您所在的地区’,'0′),
new Option(‘乌鲁木齐市’,'乌鲁木齐市’),
new Option(‘石河子市’,'石河子市’),
new Option(‘阿拉尔市’,'阿拉尔市’),
new Option(‘图木舒克市’,'图木舒克市’),
new Option(‘五家渠市’,'五家渠市’),
new Option(‘吐鲁番地区’,'吐鲁番地区’),
new Option(‘哈密地区’,'哈密地区’),
new Option(‘和田地区’,'和田地区’),
new Option(‘喀什地区’,'喀什地区’),
new Option(‘克孜勒苏州’,'克孜勒苏州’),
new Option(‘巴音郭楞州’,'巴音郭楞州’),
new Option(‘昌吉州’,'昌吉州’),
new Option(‘伊犁州’,'伊犁州’),
new Option(‘塔城地区’,'塔城地区’),
new Option(‘阿勒泰州’,'阿勒泰州’),
new Option(‘博尔塔拉州’,'博尔塔拉州’),
new Option(‘阿克苏地区’,'阿克苏地区’));
selects['31']=new Array(
new Option(‘您所在的地区’,'0′),
new Option(‘昆明市’,'昆明市’),
new Option(‘曲靖市’,'曲靖市’),
new Option(‘玉溪市’,'玉溪市’),
new Option(‘保山市’,'保山市’),
new Option(‘昭通市’,'昭通市’),
new Option(‘思茅地区’,'思茅地区’),
new Option(‘临沧地区’,'临沧地区’),
new Option(‘丽江地区’,'丽江地区’),
new Option(‘文山州’,'文山州’),
new Option(‘红河州’,'红河州’),
new Option(‘西双版纳州’,'西双版纳州’),
new Option(‘楚雄州’,'楚雄州’),
new Option(‘大理州’,'大理州’),
new Option(‘德宏州’,'德宏州’),
new Option(‘怒江州’,'怒江州’),
new Option(‘迪庆州’,'迪庆州’));
selects['32']=new Array(
new Option(‘您所在的地区’,'0′),
new Option(‘杭州市’,'杭州市’),
new Option(‘宁波市’,'宁波市’),
new Option(‘温州市’,'温州市’),
new Option(‘嘉兴市’,'嘉兴市’),
new Option(‘湖州市’,'湖州市’),
new Option(‘绍兴市’,'绍兴市’),
new Option(‘金华市’,'金华市’),
new Option(‘衢州市’,'衢州市’),
new Option(‘舟山市’,'舟山市’),
new Option(‘台州市’,'台州市’),
new Option(‘丽水市’,'丽水市’));
selects['33']=new Array(
new Option(‘重庆’,'重庆’));
selects['34']=new Array(
new Option(‘香港’,'香港’));
selects['35']=new Array(
new Option(‘您所在的地区’,'0′),
new Option(‘台北市’,'台北市’),
new Option(‘高雄市’,'高雄市’),
new Option(‘基隆市’,'基隆市’),
new Option(‘台中市’,'台中市’),
new Option(‘台南市’,'台南市’),
new Option(‘新竹市’,'新竹市’),
new Option(‘嘉义市’,'嘉义市’),
new Option(‘北县’,'北县’),
new Option(‘板桥市’,'板桥市’),
new Option(‘宜兰县’,'宜兰县’),
new Option(‘宜兰市’,'宜兰市’),
new Option(‘桃园县’,'桃园县’),
new Option(‘桃园市’,'桃园市’),
new Option(‘新竹县’,'新竹县’),
new Option(‘竹北市’,'竹北市’),
new Option(‘苗栗县’,'苗栗县’),
new Option(‘苗栗市’,'苗栗市’),
new Option(‘台中县’,'台中县’),
new Option(‘丰原市’,'丰原市’),
new Option(‘彰化县’,'彰化县’),
new Option(‘彰化市’,'彰化市’),
new Option(‘南投县’,'南投县’),
new Option(‘南投市’,'南投市’),
new Option(‘云林县’,'云林县’),
new Option(‘斗六市’,'斗六市’),
new Option(‘嘉义县’,'嘉义县’),
new Option(‘太保市’,'太保市’),
new Option(‘台南县’,'台南县’),
new Option(‘新营市’,'新营市’),
new Option(‘高雄县’,'高雄县’),
new Option(‘凤山市’,'凤山市’),
new Option(‘屏东县’,'屏东县’),
new Option(‘屏东市’,'屏东市’),
new Option(‘澎湖县’,'澎湖县’),
new Option(‘马东市’,'马东市’),
new Option(‘台东县’,'台东县’),
new Option(‘台东市’,'台东市’),
new Option(‘花莲县’,'花莲县’),
new Option(‘花莲市’,'花莲市’),
new Option(‘金门县’,'金门县’),
new Option(‘连江县’,'连江县’));
selects['36']=new Array(
new Option(‘澳门’,'澳门’));
function chsel(){
pro=document.getElementById("provid");
city=document.getElementById("cityid");
alert(city);
if(pro.value) {
   city.options.length=0;
   for(var i=0;i<selects[pro.value].length;i++){
   city.options.add(selects[pro.value][i]);
   }
}
}

</script>



{五月 17, 2008}   [转载 js] 兼容IE FF的日历控件
<html>
<head>
<title>日期输入框演示-queyang.com</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style>
body{font-size:12px;font-family:Verdana,Arial,"宋体";}
a:link {color:#464646;text-decoration:none;}
a:visited {color:#464646;text-decoration:none;}
a:hover{color:#ed145b;text-decoration:underline;}
a:active{color:#ed145b;text-decoration:underline;}
td{font-size:12px}
/*想要改输入日历控件的样子就改下面的CSS样式就可以了*/
/*Date*/
.header {font: 12px Arial, Tahoma !important;font-weight: bold !important;font: 11px Arial, Tahoma;font-weight: bold;color: #154BA0;background:#C2DEED;height: 25px;padding-left: 10px;
}
.header td {padding-left: 10px;}
.header a {color: #154BA0;}
.header input {background:none;vertical-align: middle;height: 16px;}
.category {font: 12px Arial, Tahoma !important;font: 11px Arial, Tahoma;color: #92A05A;height:20px;background-color: #FFFFD9;}
.category td {border-bottom: 1px solid #DEDEB8;}
.expire, .expire a:link, .expire a:visited {color: #999999;}
.default, .default a:link, .default a:visited {color: #000000;}
.checked, .checked a:link, .checked a:visited {color: #FF0000;}
.today, .today a:link, .today a:visited {color: #00BB00;}
#calendar_year {display: none;line-height: 130%;background: #FFFFFF;position: absolute;z-index: 10;}
#calendar_year .col {float: left;background: #FFFFFF;margin-left: 1px;border: 1px solid #86B9D6;padding: 4px;}
#calendar_month {display: none;background: #FFFFFF;line-height: 130%;border: 1px solid #86B9D6;padding: 4px;position: absolute;z-index: 11;}
.tableborder {background: white;border: 1px solid #86B9D6;}
#year,#month{padding-right:10px;background:url(attachments/month_0701/8200714125245.gif) no-repeat center right;}/*图片路径可以改成自己的*/
/*Date*/
</style>
<script>
//这段脚本如果你的页面里有,就可以去掉它们了
//欢迎访问我的网站queyang.com
var ie =navigator.appName=="Microsoft Internet Explorer"?true:false;
function $(objID){
return document.getElementById(objID);
}
</script>
</head>
<body>
<!–记得哦,下面的代码得放在Body标签里,当然,放在页面最后面也可以(不过有可能会出现JS还未加载完毕时用户点击了下面的输入框,这样页面就会出错了。)–>
<script type="text/javascript">
var controlid = null;
var currdate = null;
var startdate = null;
var enddate = null;
var yy = null;
var mm = null;
var hh = null;
var ii = null;
var currday = null;
var addtime = false;
var today = new Date();
var lastcheckedyear = false;
var lastcheckedmonth = false;
function _cancelBubble(event) {
e = event ? event : window.event ;
if(ie) {
   e.cancelBubble = true;
} else {
   e.stopPropagation();
}
}
function getposition(obj) {
var r = new Array();
r['x'] = obj.offsetLeft;
r['y'] = obj.offsetTop;
while(obj = obj.offsetParent) {
   r['x'] += obj.offsetLeft;
   r['y'] += obj.offsetTop;
}
return r;
}
function loadcalendar() {
s = ”;
s += ‘<div id="calendar" style="display:none; position:absolute; z-index:9;" onclick="_cancelBubble(event)">’;
if (ie)
{
   s += ‘<iframe width="200" height="160" src="about:blank" style="position: absolute;z-index:-1;"></iframe>’;
}
s += ‘<div style="width: 200px;"><table class="tableborder" cellspacing="0" cellpadding="0" width="100%" style="text-align: center">’;
s += ‘<tr align="center" class="header"><td class="header"><a href="#" onclick="refreshcalendar(yy, mm-1);return false" title="上一月"><<</a></td><td colspan="5" style="text-align: center" class="header"><a href="#" onclick="showdiv(\’year\’);_cancelBubble(event);return false" title="点击选择年份" id="year"></a> – <a id="month" title="点击选择月份" href="#" onclick="showdiv(\’month\’);_cancelBubble(event);return false"></a></td><td class="header"><A href="#" onclick="refreshcalendar(yy, mm+1);return false" title="下一月">>></A></td></tr>’;
s += ‘<tr class="category"><td>日</td><td>一</td><td>二</td><td>三</td><td>四</td><td>五</td><td>六</td></tr>’;
for(var i = 0; i < 6; i++) {
   s += ‘<tr class="altbg2">’;
   for(var j = 1; j <= 7; j++)
    s += "<td id=d" + (i * 7 + j) + " height=\"19\">0</td>";
   s += "</tr>";
}
s += ‘<tr id="hourminute"><td colspan="7" align="center"><input type="text" size="1" value="" id="hour" onKeyUp=\’this.value=this.value > 23 ? 23 : zerofill(this.value);controlid.value=controlid.value.replace(/\\d+(\:\\d+)/ig, this.value+"$1")\’> 点 <input type="text" size="1" value="" id="minute" onKeyUp=\’this.value=this.value > 59 ? 59 : zerofill(this.value);controlid.value=controlid.value.replace(/(\\d+\:)\\d+/ig, "$1"+this.value)\’> 分</td></tr>’;
s += ‘</table></div></div>’;
s += ‘<div id="calendar_year" onclick="_cancelBubble(event)"><div class="col">’;
for(var k = 1930; k <= 2019; k++) {
   s += k != 1930 && k % 10 == 0 ? ‘</div><div class="col">’ : ”;
   s += ‘<a href="#" onclick="refreshcalendar(‘ + k + ‘, mm);$(\’calendar_year\’).style.display=\’none\’;return false"><span’ + (today.getFullYear() == k ? ‘ class="today"’ : ”) + ‘ id="calendar_year_’ + k + ‘">’ + k + ‘</span></a><br />’;
}
s += ‘</div></div>’;
s += ‘<div id="calendar_month" onclick="_cancelBubble(event)">’;
for(var k = 1; k <= 12; k++) {
   s += ‘<a href="#" onclick="refreshcalendar(yy, ‘ + (k – 1) + ‘);$(\’calendar_month\’).style.display=\’none\’;return false"><span’ + (today.getMonth()+1 == k ? ‘ class="today"’ : ”) + ‘ id="calendar_month_’ + k + ‘">’ + k + ( k < 10 ? ‘ ‘ : ”) + ‘ 月</span></a><br />’;
}
s += ‘</div>’;
var nElement = document.createElement("div");
nElement.innerHTML=s;
document.getElementsByTagName("body")[0].appendChild(nElement);
// document.write(s);
document.onclick = function(event) {
   $(‘calendar’).style.display = ‘none’;
   $(‘calendar_year’).style.display = ‘none’;
   $(‘calendar_month’).style.display = ‘none’;
}
$(‘calendar’).onclick = function(event) {
   _cancelBubble(event);
   $(‘calendar_year’).style.display = ‘none’;
   $(‘calendar_month’).style.display = ‘none’;
}
}
function parsedate(s) {
/(\d+)\-(\d+)\-(\d+)\s*(\d*):?(\d*)/.exec(s);
var m1 = (RegExp.$1 && RegExp.$1 > 1899 && RegExp.$1 < 2101) ? parseFloat(RegExp.$1) : today.getFullYear();
var m2 = (RegExp.$2 && (RegExp.$2 > 0 && RegExp.$2 < 13)) ? parseFloat(RegExp.$2) : today.getMonth() + 1;
var m3 = (RegExp.$3 && (RegExp.$3 > 0 && RegExp.$3 < 32)) ? parseFloat(RegExp.$3) : today.getDate();
var m4 = (RegExp.$4 && (RegExp.$4 > -1 && RegExp.$4 < 24)) ? parseFloat(RegExp.$4) : 0;
var m5 = (RegExp.$5 && (RegExp.$5 > -1 && RegExp.$5 < 60)) ? parseFloat(RegExp.$5) : 0;
/(\d+)\-(\d+)\-(\d+)\s*(\d*):?(\d*)/.exec("0000-00-00 00\:00");
return new Date(m1, m2 – 1, m3, m4, m5);
}
function settime(d) {
$(‘calendar’).style.display = ‘none’;
controlid.value = yy + "-" + zerofill(mm + 1) + "-" + zerofill(d) + (addtime ? ‘ ‘ + zerofill($(‘hour’).value) + ‘:’ + zerofill($(‘minute’).value) : ”);
}
function showcalendar(event, controlid1, addtime1, startdate1, enddate1) {
controlid = controlid1;
addtime = addtime1;
startdate = startdate1 ? parsedate(startdate1) : false;
enddate = enddate1 ? parsedate(enddate1) : false;
currday = controlid.value ? parsedate(controlid.value) : today;
hh = currday.getHours();
ii = currday.getMinutes();
var p = getposition(controlid);
$(‘calendar’).style.display = ‘block’;
$(‘calendar’).style.left = p['x']+’px’;
$(‘calendar’).style.top = (p['y'] + 20)+’px’;
_cancelBubble(event);
refreshcalendar(currday.getFullYear(), currday.getMonth());
if(lastcheckedyear != false) {
   $(‘calendar_year_’ + lastcheckedyear).className = ‘default’;
   $(‘calendar_year_’ + today.getFullYear()).className = ‘today’;
}
if(lastcheckedmonth != false) {
   $(‘calendar_month_’ + lastcheckedmonth).className = ‘default’;
   $(‘calendar_month_’ + (today.getMonth() + 1)).className = ‘today’;
}
$(‘calendar_year_’ + currday.getFullYear()).className = ‘checked’;
$(‘calendar_month_’ + (currday.getMonth() + 1)).className = ‘checked’;
$(‘hourminute’).style.display = addtime ? ” : ‘none’;
lastcheckedyear = currday.getFullYear();
lastcheckedmonth = currday.getMonth() + 1;
}
function refreshcalendar(y, m) {
var x = new Date(y, m, 1);
var mv = x.getDay();
var d = x.getDate();
var dd = null;
yy = x.getFullYear();
mm = x.getMonth();
$("year").innerHTML = yy;
$("month").innerHTML = mm + 1 > 9 ? (mm + 1) : ‘0′ + (mm + 1);
for(var i = 1; i <= mv; i++) {
   dd = $("d" + i);
   dd.innerHTML = " ";
   dd.className = "";
}
while(x.getMonth() == mm) {
   dd = $("d" + (d + mv));
   dd.innerHTML = ‘<a href="###" onclick="settime(‘ + d + ‘);return false">’ + d + ‘</a>’;
   if(x.getTime() < today.getTime() || (enddate && x.getTime() > enddate.getTime()) || (startdate && x.getTime() < startdate.getTime())) {
    dd.className = ‘expire’;
   } else {
    dd.className = ‘default’;
   }
   if(x.getFullYear() == today.getFullYear() && x.getMonth() == today.getMonth() && x.getDate() == today.getDate()) {
    dd.className = ‘today’;
    dd.firstChild.title = ‘今天’;
   }
   if(x.getFullYear() == currday.getFullYear() && x.getMonth() == currday.getMonth() && x.getDate() == currday.getDate()) {
    dd.className = ‘checked’;
   }
   x.setDate(++d);
}
while(d + mv <= 42) {
   dd = $("d" + (d + mv));
   dd.innerHTML = " ";
   d++;
}
if(addtime) {
   $(‘hour’).value = zerofill(hh);
   $(‘minute’).value = zerofill(ii);
}
}
function showdiv(id) {
var p = getposition($(id));
$(‘calendar_’ + id).style.left = p['x']+’px’;
$(‘calendar_’ + id).style.top = (p['y'] + 16)+’px’;
$(‘calendar_’ + id).style.display = ‘block’;
}
function zerofill(s) {
var s = parseFloat(s.toString().replace(/(^[\s0]+)|(\s+$)/g, ”));
s = isNaN(s) ? 0 : s;
return (s < 10 ? ‘0′ : ”) + s.toString();
}
loadcalendar();
</script>
选择日期:<input name="member.birth" type="text" value="1982-1-1" size="14" readonly="readonly" onclick="showcalendar(event, this);" onfocus="showcalendar(event, this);if(this.value==’0000-00-00′)this.value=”" />
</body>
</html>


{五月 16, 2008}   [原创 flash] 用flash制作mp3音乐播放器

 除了大型公司能够自己建立音乐库,绝大多数的时候,我们只能加载远程的音乐文件,所以因为as3的安全限制问题,音乐播放器还是只能用as2来做.

 做了两个版本的mp3音乐播放器.

版本1) demo地址:http://www.riceseeker.com/www/mp3player/ (已失效)

版本2) demo地址:http://www.adanghome.com/mp3player2/

两个版本不只是外观变化了,最主要的是它们的核心方式变了.版本1用的是流式播放方式,版本2用的是下载播放方式.流式播放方式的优点的播放无需下载完即可播放,用户体验上要好得多.只是有一个无法解决的问题是,在第一次播放的时候,进度显示无法正常示.这是因为文件下载完以前,as取得的文件播放长度是个不正确的值.查遍了网上的相关信息,只查到一种hack方法,并不完美.为了解决进度显示的问题,我又做了版本2,这个版本是等音乐下载完才开始播放,这样就可以正确显示播放进度.缺点是用户体验会降低,毕竟流式播放才是网络王道.

代码就不贴了.有时间再来补上实现的思路.



{五月 15, 2008}   IE的hasLayout

   IE的form经常会出现上下边距,莫名其妙的.以前IE6时代就知道它有这个hasLayout的问题,到了IE7还是存在.还有******bug也依然健在.奇怪,这么明显的bug,IE7为什么没有解决呢??

    以前在定义hasLayout的时候,只喜欢用* html .hasLayout{height:1px;}.以后再改了,定义为* html .hasLayout,* + html .hasLayout{zoom:1;} 因为IE7已经正确理解height,而非做为min-height解了,所以,还是用zoom:1来获得hasLayout是最好的办法.



{五月 13, 2008}   iframe中元素的获取
   iframe本身是一个独立的窗口,获取取中的元素,要先取得这个窗口的document.可以用document.getElementById("iframe_id").contentWindow.document来获得。


{五月 12, 2008}   onmouseout问题

js的onmouseout有很奇怪的一个问题。例如

<div onmouseout="alert(123)">

<a href="#">test</a>

</div>

我们预期只有当鼠标从div中移开的时候才会触发onmouseout事件,可是,事实上,当我们移到div中的元素时,例如本例中的a标签时,就会触发onmousout事件。也就是说,移到对象的子对象上,也算onmouseout了。这往往会让我们预期的效果达不到。今天的工作就遇到了这个问题。在blueidea上搜了一下,找了解决办法。兼容IE和FF。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>阿当制作</title>
</head>

<body>
<script type="text/javascript">
function test(obj, e) {
if (e.currentTarget) {
   if (e.relatedTarget != obj) {
    if (obj != e.relatedTarget.parentNode) {
     alert(1);
    }
   }
} else {
   if (e.toElement != obj) {
    if (obj != e.toElement.parentNode) {
     alert(1);
    }
   }
}
}
</script>
<div onmouseout="test(this, event)" style="width:100px;height:100px;border:1px #666 solid">
<span style="margin:5px;width:100%;height:100%;border:1px #ff0000 solid">faddsf</span>
</div>
</body>
</html>

今天发现JQ中关于这个问题,已经有了一个好的解决办法了.呵呵,jquery中定义了一种事件叫做"mouseleave",用这个事件做事件句柄的话,就可以解决这个问题了.越来越发现jquery是个好东西了.



{五月 10, 2008}   调试css的新装备--IETester

   群里的弟兄发了个新工具的下载地址出来,看了下简介,觉得非常不错,推荐一下。

   这个工具叫做IETester,是外国佬做的浏览器,内核是IE,但是这个浏览器可以非常自由地切换ie内核版本,从5.5到8全部都可以(如果要用到IE7和IE8内核,需要先升级IE浏览为IE7或者IE8,低于IE7版本的浏览器,装这个浏览器的时候无法激活IE7和IE8内核)。

    虽然我从来不考虑IE5.5,可是IE6和IE7一直都是必须考虑的浏览器。之前有所谓绿色IE7和绿色IE6在网上,可是都不完美,切换也麻烦。以后兼容IE8还得下IE8绿色版什么的,头疼。这下好了,装一下IETest就什么问题都解决了,IE几想怎么切换就怎么切换。当然,如果你的IE还是IE6的话,赶紧先升级一下吧。

下载地址:

http://www.my-debugbar.com/ietester/install-ietester-v0.2.exe



{五月 08, 2008}   《Pro JavaScript Techniques》中的一些函数

//获取元素的样式值。
function getStyle(elem,name){
     if(elem.style[name]){
         return elem.style[name];
         }else if(elem.currentStyle){
             return elem.currentStyle[name];
             }else if(document.defaultView&&document.defaultView.getComputedStyle){
                 name=name.replace(/([A-Z])/g,"-$1");
                 name=name.toLowerCase();
                 var s=document.defaultView.getComputedStyle(elem,"");
                 return s&&s.getPropertyValue(name);
                 }else{
                     return null
                     }
     }
//获取元素相对于这个页面的x和y坐标。    
function pageX(elem){
     return elem.offsetParent?(elem.offsetLeft+pageX(elem.offsetParent)):elem.offsetLeft;
         }
function pageY(elem){
     return elem.offsetParent?(elem.offsetTop+pageY(elem.offsetParent)):elem.offsetTop;
         }
//获取元素相对于父元素的x和y坐标。        
function parentX(elem){
     return elem.parentNode==elem.offsetParent?elem.offsetLeft:pageX(elem)-pageX(elem.parentNode);
     }
function parentY(elem){
     return elem.parentNode==elem.offsetParent?elem.offsetTop:pageY(elem)-pageY(elem.parentNode);
     }
//获取使用css定位的元素的x和y坐标。
function posX(elem){
     return parseInt(getStyle(elem,"left"));
     }    
function posY(elem){
     return parseInt(getStyle(elem,"top"));
     }
//设置元素位置。    
function setX(elem,pos){
     elem.style.left=pos+"px";
     }    
function setY(elem,pos){
     elem.style.top=pos+"px";
     }
//增加元素X和y坐标。    
function addX(elem,pos){
     set(elem,(posX(elem)+pos));
     }
function addY(elem,pos){
     set(elem,(posY(elem)+pos));
     }
//获取元素使用css控制大小的高度和宽度    
function getHeight(elem){
     return parseInt(getStyle(elem,"height"));
     }
function getWidth(elem){
     return parseInt(getStyle(elem,"width"));
     }
//获取元素可能,完整的高度和宽度
function getFullHeight(elem){
     if(getStyle(elem,"display")!="none"){
         return getHeight(elem)||elem.offsetHeight;
         }else{
         var old=resetCss(elem,{display:"block",visibility:"hidden",position:"absolute"});
         var h=elem.clientHeight||getHeight(elem);
         restoreCss(elem,old);
         return h;
         }
     }
function getFullWidth(elem){
     if(getStyle(elem,"display")!="none"){
         return getWidth(elem)||elem.offsetWidth;
         }else{
         var old=resetCss(elem,{display:"block",visibility:"hidden",position:"absolute"});
         var w=elem.clientWidth||getWidth(elem);
         restoreCss(elem,old);
         return w;
         }
     }
//设置css,并保存旧的css
function resetCss(elem,prop){
     var old={};
     for(var i in prop){
         old[i]=elem.style[i];
         elem.style[i]=prop[i];
         }
         return old;
     }
function restoreCss(elem,prop){
     for(var i in prop){
         elem.style[i]=prop[i];
         }
     }
//显示和隐藏
function show(elem){
     elem.style.display=elem.$oldDisplay||" ";
     }
function hide(elem){
var curDisplay=getStyle(elem,"display");
if(curDisplay!="none"){
      elem.$oldDisplay=curDisplay;
     elem.style.display="none";
   }
     }
//设置透明度    
function setOpacity(elem,num){
     if(elem.filters){
         elem.style.filter="alpha(opacity="+num+")";
         }else{
             elem.style.opacity=num/100;
             }
     }
//滑动    
function slideDown(elem){
     var h=getFullHeight(elem);
     elem.style.height="0px";
     show(elem);
     for(var i=0;i<=100;i+=5){
         new function(){
                   var pos=i;
                   setTimeout(function(){elem.style.height=(pos/100*h)+"px";},(pos*10));
                   }
         }
     }
//渐变
function fadeIn(elem){    
      show(elem);
      setOpacity(elem,0);
     for(var i=0;i<=100;i+=5){
         new function(){
                   var pos=i;
                   setTimeout(function(){setOpacity(elem,pos);},(pos+1)*10);
                   }
         }
     }
//获取鼠标光标相对于整个页面的位置。    
function getX(e){
     e=e||window.event;
     return e.pageX||e.clientX+document.body.scrollLeft;
     }
function getY(e){
     e=e||window.event;
     return e.pageY||e.clientY+document.body.scrollTop;
     }
//获取鼠标光标相对于当前元素的位置。
function getElementX(e){
     return (e&&e.layerX)||window.event.offsetX;
     }
function getElementY(e){
     return (e&&e.layerY)||window.event.offsetY;
     }
//获取页面的高度和宽度
function getPageHeight(){
     var de=document.documentElement;
     return document.body.scrollHeight||(de&&de.scrollHeight);
     }
function getPageWidth(){
     var de=document.documentElement;
     return document.body.scrollWidth||(de&&de.scrollWidth);
     }
//获取滚动条的位置。
function scrollX(){
     var de=document.documentElement;
     return self.pageXOffset||(de&&de.scrollLeft)||document.body.scrollLeft;
     }
function scrollY(){
     var de=document.documentElement;
     return self.pageYOffset||(de&&de.scrollTop)||document.body.scrollTop;
     }
//获取视口的高度和宽度。    
function windowHeight() {
var de = document.documentElement;
return self.innerHeight||(de && de.offsetHeight)||document.body.offsetHeight;
}
function windowWidth() {
var de = document.documentElement;
return self.innerWidth||( de && de.offsetWidth )||document.body.offsetWidth;
}

今天在blueidea看到的。很不错的函数,不愧是jq的作者啊。其中那个获取style样式的函数看起来真眼熟啊,想起来几天前我才写的一个获取样式的函数。当时也考虑到用正则来让用户体验更好更傻瓜一点的,可是正则不太熟。还是大师厉害啊,学习ing。



{五月 07, 2008}   颜色随机

function randomColor(){

r = Math.floor(Math.random()*255).toString(16);

g = Math.floor(Math.random()*255).toString(16);

b = Math.floor(Math.random()*255).toString(16);

return "#"+r+g+b;

}

var nod=getElementById("nod");

var clr=randomColor();

nod.style.backgroundColor=clr;




about

打造高品质的前端代码

pages
categories
archive
et cetera