问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

编写一个JAVASCRIPT 程序,弹出一个询问生日的对话框,计算出用户的星座并显示再浏览器的状态栏上

发布网友 发布时间:2022-04-24 06:57

我来回答

3个回答

懂视网 时间:2022-04-24 11:18

本文实例讲述了JS根据生日月份和日期计算星座的简单实现方法。分享给大家供大家参考,具体如下:

看到了别人写的一个计算星座的js,冗长的有点儿看不过去,就自己写个了。

我想,这个函数应该足够精简了:)

传入参数:month [int] 1~12; day [int] 1~31。

// 根据生日的月份和日期,计算星座。
function getAstro(month,day){
 var s="魔羯水瓶双鱼牡羊金牛双子巨蟹狮子处女天秤天蝎射手魔羯";
 var arr=[20,19,21,21,21,22,23,23,23,23,22,22];
 return s.substr(month*2-(day<arr[month-1]?2:0),2);
}

如果你在网上搜“日期 星座 函数”,除了我的或转载我的代码之外,几乎都是长长的代码,恐怕不能找到比上面更简洁的代码了。

不过这上面3行代码仍然可以进一步精简,再来改进一下:

// 根据生日的月份和日期,计算星座。
function getAstro(m,d){
 return "魔羯水瓶双鱼牡羊金牛双子巨蟹狮子处女天秤天蝎射手魔羯".substr(m*2-(d<"102223444433".charAt(m-1)- -19)*2,2);
}

是不是很酷呢,只有一行代码了,而且最大限度的精简了。

上面用到了一个substr函数和一个charAt函数,如果不考虑IE,那么.charAt(m-1)甚至可以精简为[m-1]

如果不需要输出星座名称而只需要星座数字索引,前面的字符串也可以省去,看起来就像这样:

// 根据生日的月份和日期,计算星座。
function getAstro(m,d){
 return m-(d<"102223444433".charAt(m-1)- -19); //
输出0~12的数字,0表示摩羯,1表示水瓶,依此类推,...,11是射手,12是摩羯。 }

下面写一段测试代码来验证:

// 根据生日的月份和日期,计算星座。
function getAstro(m,d){
 return "魔羯水瓶双鱼牡羊金牛双子巨蟹狮子处女天秤天蝎射手魔羯".substr(m*2-(d<"102223444433".charAt(m-1)- -19)*2,2);
}
//下面写一个测试函数
function test(m,d){
document.writeln(m+"月"+d+"日 "+getAstro(m,d));
}
//测试
test(12,21); //
输出: 12月21日 射手 test(12,22); //输出: 12月22日 魔羯 test(1,1); //输出: 1月1日 魔羯 test(2,18); //输出: 2月18日 水瓶 test(2,19); //输出: 2月19日 双鱼

附十二星座日期对照:

魔羯座(12/22 - 1/19)、水瓶座(1/20 - 2/18)、双鱼座(2/19 - 3/20)、牡羊座(3/21 - 4/20)、
金牛座(4/21 - 5/20)、双子座(5/21 - 6/21)、巨蟹座(6/22 - 7/22)、狮子座(7/23 - 8/22)、
处女座(8/23 - 9/22)、天秤座(9/23 - 10/22)、天蝎座(10/23 - 11/21)、射手座(11/22 - 12/21)

热心网友 时间:2022-04-24 08:26

借此自己也学习下,写了个小例子,你看看
<html>
<head>
<script>
function show(){
var a=[['12-22','01-19','魔蝎座'],['01-20','02-18','水瓶座'],['02-19','03-20','双鱼座'],['02-21','05-20','白羊座'],
['04-21','05-20','金牛座'],['05-21','06-21','双子座'],['06-22','07-22','巨蟹座'],['07-23','08-22','狮子座'],
['08-23','09-22','*座'],['09-23','10-22','天秤座'],['10-23','11-21','天蝎座'],['11-22','12-21','射手座']];
var datePattern = /^(\d{4})-(\d{1,2})-(\d{1,2})$/;
var birthday=window.prompt('输入你的出生年月日(格式如1985-10-15)','');
try{
if(!datePattern.test(birthday)&&birthday){
alert('请输入正确的生日格式');
}
else{
var b=new Date(Date.parse(birthday.replace('-','/')));
d=datePattern.exec(birthday);
s=RegExp.$1;
for(var i=0;i<a.length;i++){
var start_date=new Date(Date.parse(s+'/'+a[i][0].replace('-','/')));
var end_date=new Date(Date.parse((i==0?s-0+1:s)+'/'+a[i][1].replace('-','/')));
if(b>=start_date&&b<=end_date){
window.status='你的星座是:'+a[i][2];
break;
}
}
if(i=='12'){
window.status='错误的出生日期,无法解析';
}
}
}catch(e){
alert("格式错误"+e);
}
}
</script>
</head>
<body>
<input type="button" onclick='show()' value="我的星座"/>
</body>
</html>

热心网友 时间:2022-04-24 09:44

射手座 天平座 白羊座 *座 金牛座
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
这是个成本会计题,马上要考这道原题了,求大虾帮忙 财务管理类问题,求大虾帮忙,小弟感激不尽。具体问题看问题补充。_百度... 光影魔术手怎么换底色 光影魔术手换底色教程 ...米的绳子围绕一棵树干饶了6圈,还余下1.16米,这棵树干上的直径大约是... ...还余下1.16米,这棵树的树干的直径大约是多少米?求算式! ibm x3500 M5 服务器 运行时风扇声音好大,吵死了,可以下掉一个吗... IBMX3500 M5,最近老是出现自动关机的情况,需要把服务器电源拔掉半分钟... 治疗萎缩性胃炎的方法 怎么治萎缩胃炎 JYF-40FS06电饭煲190块买的是假的吗 台州银行和浙江泰隆银行,该怎么选择,都是柜员这个职位,待遇薪酬,发展前景等方面哪个更好些? 杭州这边的台州银行信贷员待遇 请问台州银行--赣州银座村镇银行的工资待遇怎么样? 你好请问上了台州银行的黑名到,我上班发工资招商银行能取到钱不? 2021年阳历六月份出生的牛宝宝好不好 2021年我女儿起什么好听的名字好?听朋友说,起名68网不错,价格还便宜 2021年农历6月初三出生的人刘佩娜与刘元菁那个名字好? 初中500字读后感(哲理性的) 拼多多如何预防假货? 中学读后感。求500字内的! 猪肉上盖什么章是安全章 跪求初中500字读后感14篇。跪求! 拼多多买到假货怎么发帖让网民看到不要上当被骗? 云闪付可以和支付宝的钱吗 有效发盘是否必须“传递到受盘人”?请解释原因~ 佛教中人字盘是什么意思? 云闪付怎么付款 什么是发盘? 什么是发盘什么是还盘 云闪付能的钱吗 浙江台州银行卡可以在认何地方用工资卡不? 西安我住大雁塔附近宾馆的话,去兵马俑应该怎么坐车,多长时间能到? 什么叫建筑红线图定位图 怎么确定诸品牌在定位图上的位置? 总平面定位图有什么用 别人用我的车指标购买了一辆二手车,现在他要用这辆车去做车抵押贷款。并且要我去在货款合同上签字! 女生说,你挺机智怎么回? 个体工商户定额后,超出怎么交税。 个体工商户年营业额45万,纳税总额怎么写 个体工商户超过48万上税吗 丹拿236磨码是真是假 丹拿236分频器的尺寸 用户按照YYYY/MM/DD的格式输入自己的出生日期,计算并输出用户的星座 丹拿236功率w配功放4x150w合适吗? 诗芬尼95.4功放能带丹拿236吗? 可不可以给我推荐一个好的汽车音响 姓舒取什么名字好? 舒姓有什么好听的单字名字 舒姓女孩生于2015年2月5日取什么名字好 舒姓女孩取个带木字旁的名字........急.急.急!!!!!!!!