十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
初学者首先要学会的是用编程的思维去思考问题,换而言之就是把问题抽象成 if-else、for、while-do 等等一系列流程,在掌握这一步骤之后才要考虑的是优化这个流程。
成都创新互联公司专注于吉利企业网站建设,自适应网站建设,成都商城网站开发。吉利网站建设公司,为吉利等地区提供建站服务。全流程定制网站开发,专业设计,全程项目跟踪,成都创新互联公司专业和态度为您提供的服务
所以别嫌代码笨,先学会实现需求才是要考虑的。
题主的代码显然是不符合需求的。从需求上来看,需要考虑1、3、5、7、8、10、12月有31天,4、6、9、11月有30天,2月闰年29天、平年28天。题主的代码 totalMonth % 2 == 0 计算的是是否为偶数月,仅此一个判断显然跟需求不符。
题主觉得代码笨是正常的,你的老师出这道题显然只是为了考察你们对循环和条件分支语句的理解。如果不用循环来做的话反而非常简单:
var year = +prompt("Year:"),
month = +prompt("Month:"),
day = +prompt("Day:");
var date = new Date(year, month - 1, day);
var firstDate = new Date(year, 0, 1); // 取得该年的1月1日
var dayOfYear = (date.getTime() - firstDate.getTime()) / (24*3600*1000) + 1; // 两者差值是相差的毫秒数,除以一天总计的毫秒数,即相差的天数
alert(Math.ceil(dayOfYear));
1while;
var num = 1;//1、声明循环变量
while (num=10){//2、判断循环条件;
document.write(num+"br /");//3、执行循环体操作;
num++;//4、更新循环变量;
}
while循环()中的表达式,运算结果可以是各种类型,但是最终都会转为真假,转换规则如下。
①Boolean:true为真,false为假;
②String:空字符串为假,所有非空字符串为真;
③Number:0为假,一切非0数字为真;
④null/Undefined/NaN:全为假;
⑤Object:全为真。
2
do-while循环
while循环特点:先判断后执行;
do-while循环特点:先执行再判断,即使初始条件不成立,do-while循环至少执行一次;
var num = 10;
do{
document.write(num+"br /");//10 9 8 7 6 5 4 3 2 1 0
num--;
}while(num=0);
document.write(num);//-1
3,for循环
for (var num =1; num=10; num++) {
document.write(num+" br /"); //1 2 3 4 5 6 7 8 9 10 }
4
for-in循环
var arr = ['a', 'b', 'c', 'd']; for (let a in arr) {
console.log(a); // 0 1 2 3 }
for (let a of arr) {
console.log(a); // a b c d
}
JQ循环有$.each和$.map('div').each(function (i){ i就是索引值 this 表示获取遍历每一个dom对象});
首先我觉得你没有搞懂你列举的语句,你应该重新翻一次这些语句的作用;
for,while,do...while,for...in是才是属于循环语句, if if..else switch是条件语句
你还是继续翻一次,仔细看清楚吧。
关于你第一个问题:
循环一句一般是用在 需要重复某个操作, 例如你需要在页面输出100句hello world,难道你要复制出一百句吗,不可能吧。这时候就可以运用循环语句了
关于你第二个问题:
再次说一下你要回去看清楚这几个语句的的作用,具体情况具体分析,下面说说我的理解
(1) for语句做到的while语句也是做到,没区别
(2)do while语句是属于先执行后条件的语句,就是说至少会执行一次代码
(3)for...in是用在循环对象属性的
JavaScript 支持不同类型的循环:
for - 循环代码块一定的次数
for/in - 循环遍历对象的属性
while - 当指定的条件为 true 时循环指定的代码块
do/while - 同样当指定的条件为 true 时循环指定的代码块
*******——8行7列,属于嵌套循环。其实你可以把它看作是一个整体的循环。整体的for循环要循环8次,理解到这即可,因为里面的只是它的循环内容。
比如说:
for(int
i=0;i8;i++){
document.write("*******");//这里的循环输入结果是8行7列的*******。
}
以此类推,最先执行的是:document.write("*******");这一句。所以,for循环里面又嵌了一个for循环,理所当然,首先执行的是里面的那个for循环。得到*******,外面的循环再循环8次,因此得到8行7列:
*******
*******
*******
*******
*******
*******
*******
*******
其实如果真要列出所有颜色,是没有意义的。原因:一、浏览器承受不了这个循环次数;二、肉眼很难分辨出某些相近颜色的区别。不过你这个题目用来作为初级编程习题是很不错的。以下是一个完整代码,另存为.htm文件即可浏览。
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ""
html xmlns=""
head
title表格背景颜色变化/title
/head
script type="text/javascript"
window.onload = function(){
var tableStr = getTable(3000);
document.getElementById("container").innerHTML = tableStr;
document.getElementById("msg").value = tableStr;
}
/**
* 按行变幻表格背景颜色
* @param int n 要生成的表格行数
*/
function getTable(n){
var colors = [0,1,2,3,4,5,6,7,8,9,'a','b','c','d','e','f'];
var strs = ["table width='80%' border='1'\n"];
var color = [0,0,0,0,0,0];
var cstr;
for(var i=0,index=0;in;++i){
if(!(i%16) i!=0){
++index;
}
for(var j=0;j=index%6;++j){
color[j] = colors[index%16];
}
color[Math.floor(index/6)%6] = colors[i%16];
cstr = color.join('');
strs.push("\ttr");
strs.push("td style='background:#");
strs.push(cstr);
strs.push(";color:#ffffff'#");
strs.push(cstr);
strs.push("/td/tr\n");
}
strs.push("/table");
return strs.join('');
}
/script
body
div id="container"/div
textarea id="msg" cols="80" rows="30"/textarea
/body
/html