為啥我輸出的是NaN
<script type="text/javascript">
? ?var mydate=new Date;
? ?var weekday=["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
? ?document.write(mydate.getFullYear()+"年"+(mydate.getMonth()+1)+"月"+mydate.getDate()+"日"+weekday[mydate.getDay()]+"<br />");
? //通過javascript的日期對象來得到當前的日期,并輸出。
??
? //成績是一長竄的字符串不好處理,找規律后分割放到數組里更好操作哦
? var scoreStr = "小明:87;小花:81;小紅:97;小天:76;小張:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76";
? var score=scoreStr.split(':');//分割字符
? ?document.write("1."+score+"<br />");
? var sum = 0;
? var average= 0;
? for( var i =0;i<score.length;i++ ){
? ? var index = score[i].indexOf(':');? //返回":"字符串出現的位置
? ? document.write(index+"<br />");
? ??
sum=sum+parseInt(score[i].substr(0,2));??
? ?}//sum+=i相當于sum=sum+i,即表示首先先計算sum和i的和,再將其和賦予給sum。
? ? ? ?document.write(sum+"<br />");
? ?average = Math.floor(sum/score.length);
? ? ? ?document.write("--班級平均分為:"+average);
? //從數組中將成績撮出來,然后求和取整,并輸出。
??
2019-11-14
第一:var score=scoreStr.split(':');//分割字符 你兩次都是。以:分割的,第一個直接改為 ; 也許是你打錯了。
第二: 第一步非分割符以“;”執行的話 后面修改你的求和?
sum=sum+parseInt(score[i].substr(3)); ?//?sum=sum+parseInt(score[i].substr(0,2));【你原先獲取的是底標0,2】,若你沒修改第一步,你會發現你輸出的內容中 第一個是小明,數據類型已經錯誤了。
整體就按照2步修改,就ok了。
你這列子:沒注意細節,多多用document.write()以及console.log()輸出測試報錯數據,這樣你基本不會出什么問題了
2019-11-13
在?document.write("1."+score+"<br />");這一行,可以發現你的score內的內容是這樣的:
[小明, 87;小花, 81;小紅, 97;小天, 76;小張, 74;小小, 94;小西, 90;小伍, 76;小迪, 64;小曼, 76]
可以看到,在第一個元素“小明”里面,是沒有成績的。
因此,你后面想取parseInt(score[i].substr(0,2))的時候,當i=0,也就是“小明”這個元素的時候,他的substr(0,2)是漢字而不是數字。數字加漢字,結局當然就悲催了。
改的方法很簡單,把?for( var i =0;i<score.length;i++ ) 改成??for( var i =1;i<score.length;i++ ) 即可。