FOR 迴圈
現在來做一個輸入什麼數字 就產生幾個*字號的頁面
首先宣告一個str 空字串變數 來裝*號
不然每次.innerHTML都會蓋掉
for(i = 0;i < score;l++)
for(宣告一個用來記數的變數再給他起始值;什麼時候停止;每一次迴圈記述變數的變化)
for(var i = 0;| < score;|++) 這裡前面要加var也可以 沒有差
這個 i 也是只有for裡面才看得懂 外面不認識他
i++ = 意思是執行完這段陳述之後 i = i+1;
現在設定從0開始記數 直到<score 每次+1
這樣就剛好執行了score的次數
每執行一次str += '*';
這句相當於 str = str + '*'; 是加在後面的
如果想要加在前面 就自己打成 str = '*' + str;
舉例 現在把一段字串複製到另一段字串
用for迴圈去跑他每一個字 然後加在新字串後面
如果加在後面
現在做一個題目
輸入秒數 然後把他轉換成 時:分:秒 的格式輸出
一些會用到的運算
Math.floor(8.5)輸出 8 無條件捨去小數點
7/2 輸出3.5 除法
11%2 輸出1 取於數
var a = 70;
'你好' + a 輸出字串 你好70
這樣可以把變數跟字串連再一起
---------------------------------------------------------------------------------
以下解答
首先取得 時:分:秒 裡面的秒
秒就是總秒數除以60之後剩下未滿60秒 不能湊成一分的
所以就是總秒數 % 60
假設我輸入123
那應該等於兩分三秒 0:2:3
所以秒的必分 123 % 60 = 3
分的話就是 123 / 60 = 2.05 這時候就要捨去小數
剩下小時
如果我輸入 3600 那分照剛剛的運算會得到 3600 / 60 = 60
這時候應該要進位成1小時
所以 小時 = 3600 / 60 / 60 再捨去小數
剛剛的分 如果超過60 就應該要進位了
所以跟秒一樣要 % 60 取餘數
這些都是變數名稱 可以隨便命名 方便看就好
程式的變數命名法通常有兩種標準
一種是底線法 user_name user_id
一種是駝峰法 userName userId
看懂了做一個相反的 輸入時:分:秒 輸出總秒數
要用到的函數
字串.split(':') 會回傳一個陣列
如var a = '20:30:40'.split(':')
會得到a[0] = '20'
a[1] = '30'
a[2] = '40'
-----------------------------------------------------------------------------------
以下解答
我的解答:
多做了兩個按鈕 分別運算之後再加起來
有些地方忘記加上分號 要注意養成習慣
使用split(':')的解法
split(':') 會把一個字串以:分開成陣列
如果輸入 1;2:3 就會得到一個大小為3的陣列 索引是從0開始
num[0]='1' num[1]='2' num[2]='3'
如果字串是 ::1::1:3::::::4
會得到大小為四的陣列
num[0]='1'
num[1]='2'
num[2]='3'
num[3]='4'
如果字串是 ::fuck=:**1:
會得到大小為2的陣列
num[0]='fuck='
num[1]='**1'
再來寫一個
輸入 兩個整數
輸出順序後由小到大排列
例如輸入 22 7
輸出 7 22
-----------------------------------------------------------------------
以下解答
把字串串起來的方法 num0 + '' + num1
練習for 迴圈
for迴圈是讓程式高效率的重點 可以自動重複執行你要的功能
for(i = 0; i<3; i++){
重複執行的程式碼
}
這意思是
建立一個for迴圈 然後宣告一個 i變數 =0
這邊要打 for(var i = 0; i<3; i++) 也可以
這個i變數是拿來當迴圈的計數器
for(給計數器起始值;什麼時候結束;每個迴圈後如何累加)
有加上var的話 功能上是沒差
但可以比較好辨別他是這個for回圈內的變數 外面是不能用的
如果你要拿外面宣告的變數進來for當作計數器也可
所以 for(var i = 0 ; i<3 ; i++) 意思就是
記數起始0 當他小於3時會執行 每次+1
for(var i = 0; i<3; i++){
輸出i}
如果我在每個迴圈輸出i值
會出現
0
1
2
總共跑三圈
for(var i = 0; i <=3; i++){
輸出i
}
如果是這樣 會輸出
0
1
2
3
for(var i = 0 ; i<=3 ; i--{
輸出i
}
如果是這樣 會出錯
因為i永遠不可能大於3 會變成無限迴圈
for(var i = 0; i<=5 ; i=i+2){
輸出i
}
如果是這樣 會輸出
0
2
4
每次累加改成2 有時候不一定每次加1 看需求
寫一個功能
輸入一個數字
3
輸出
1
2
3
輸入
5
輸出
1
2
3
4
5
換行是 <br>
假如我有個字串 = '1<br>2<br>3'
放到innerHTML裡面就會是
1
2
3
------------------------------------------------------------------------
以下解答
x = "" 的意思是
for 跑完第一圈
x是 1<br>
第二圈把2<br>加在x後面所以
x是1<br>2<br>
第三圈把3<br>加在x後面
x是 1<br>2<br>3<br>
直接在HTML裡面打1<br>2<br>3<br>
就會出現
1
2
3
所以就是利用for迴圈 一次生成完重複的html語法
然後插入指定的hello元素內
像這種也是利用for迴圈生成連續的html語法片段
再來是巢狀for迴圈 巢狀的結構常常會看到
就是if裡面有if for裡面有for
一個for是一維 雙層for就是二維的概念
現在做一題
輸入一個數字
3
輸出
*
**
***
輸入5
輸出
*
**
***
****
*****
要思考外圈for的每一圈要做什麼事情
*
**
***
可以看到每一行就是一個外圈for
1. 一圈裏面需要產生你那圈的記數的星號數量
這裡就是需要內圈for
2.一圈的最後需要換行<br>
剛剛上面的練習 輸入3
輸出
1
2
3
剛好就是
*
**
***
每一行的星號數量 所以要利用for記數的變數值
來去控制內圈for需要執行幾圈