在加入循环后,本应出现的弹窗就消失了
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<script type="text/javascript">
var year=prompt("请输入您的出生年份"),month=prompt("请输入您的出生月份"),date=prompt("请输入您的出生日期");
function s(d,h,y){
while(h<=7){for (var i = 1; i < h; i+=2) {d+=31};for (var j = 1; j < h&& j % 2==0; j+=1) {d+=30}};
while(h>7){for (var i = 8; i < h; i+=2) {d+=31};for (var j = 8; j < h&& j % 2==; j+=1) {d+=30}};
while(h>7){d+=244};
if(year%4==1){d-=2}else{d-=1};return d;};
var p=s(date,month,year);
document.write("您的生日在"+year+"年是第"+p+"天");
</script>
</body>
</html>正在回答
同学你好,如下,==后面这个后面没有东西哦。

希望能帮助到你,欢迎采纳。
祝学习愉快!
同学你好,这个问题修改之后,弹窗是可以出现的,但是确实最终的文字没有出现,

在你的上一个问题中,提问了类似的问题,老师为你指出了代码中的错误,并指出了这个思路是有些绕,并且给出了一个比较合理的高效的实现思路,您也采纳了,同学可可以再看一下, http://class.imooc.com/course/qadetail/79291 ,如果您没有理解,可以先不采纳,继续提问,老师会继续为你解答。
对于这个代码中的问题,我再详细的为你解释一下代码中的问题,以及需要如何修改才能实现,是建立在你的实现方式的基础上进行修改的:
是由于最后死循环了,因为使用了while循环,但是这个却没有跳出这个循环的操作,所以可以把循环换为if语句,

这样修改是可以运行的,但是最终输出的结果是不对的;原因:
(1)使用prompt输入的年月日是字符串,会导致字符串拼接,可以使用parseInt转换下,例:

(2)如下,不太理解这个的循环的作用是什么?是为了添加4,6,等月份中的30天吗?这样是不行的哦,假设,要添加4月份的30天的话,j从1开始,j%2==0,j等于1的时候,这个条件不满足,循环没有进入,后面的30天也是无法添加的。

①小于七月这里,添加30天的,这里可以从2月开始添加,每个后面也是加2

②大于七月这里,可以从9月开始

(3)判断闰年不严谨,判断年份是否是闰年,需满足下列条件之一(两个条件同时存在,一个为真即可):
① 年份能整除4但是不能整除100
② 年份能整除400
(4)大于7月的话,需要添加加上前七个月的天数,2月按照30天计算,所以应该是214天;

不过以上的实现方式不是最好的,老师给你一个相对比较高效的实现方式:可以使用arguments参数来实现,可参考如下思路:
(1)因为使用prompt输入的是字符串,建议:使用parseInt转化下。
(2)定义一个变量,用来接收总的天数。
(3)先安装平年进行计算,若是闰年且月份大于2月,则中天数加1,
(4)判断年份是否是闰年,需满足下列条件之一(两个条件同时存在,一个为真即可):
① 年份能整除4但是不能整除100
② 年份能整除400
(5)最后加上输入的天数。可参考如下:

希望能帮助到你,欢迎采纳。
祝学习愉快!
- 参与学习 人
- 提交作业 11218 份
- 解答问题 36712 个
从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星