---
# System prepended metadata

title: 4/19 線上 Slack 助教

---

# 4/19 線上 Slack 助教
今日輪班助教時間
SONYKO：4/19（一）
早上 9:00 - 早上11:00，下午 1:00 -下午 5:00

發問規範
老師助教同學們好，這是我的 Codepen，我原本預期「JS 第 8 行會出現數字 8」，但卻出現「預期外的結果是 0」，想問下問題出在哪裡？

注意
請各位先到 Slack 上將問題放在助教服務內的 thread，如圖

遵循以上的發問規範以便助教查看問題，不可直接貼上網址而沒有說明文字或者只提供截圖
助教會依照 Slack 上的順序回覆問題
以下問題區塊只能由助教自行增加
助教會將回覆寫在下方問題區塊
問題
🎀　這裡只能由助教自行增加問題，請大家將問題放在 thread 上　💕

獵人：
老師助教同學們好：
關於API中的Patch與PUT的差異不是很了解，
兩個都是更新資料，但在API上一個是前台更新購物車數量、一個是後台更新已處理狀態，看起來是很類似。
請問兩者有何差異呢?
以下為找到網路說明，但還是不懂? 謝謝
助教回覆：
簡單來說， put 就是全部更新、 patch 是部分更新。
假如我今天寫了一篇文章， 包含 title 和 文章內容。 我覺得 title 想換掉 ， 如果我用 put 修改， 我必須整包連同文章內容一起丟回去做修改。

但我今天只想要修改 title 有必要這樣嗎 !? 因此 patch 就誕生ㄌ。
patch 可以做局部修改， 意思就是我今天想改 title 、我只要回傳 title 的部分就好， 不用整包丟回去。

所以大家才會說 put 是 「取代」 path 是 「修改」 。
實際上 put 的行為真的比較像是取代， 透過覆蓋新的資料來達到修改的效果。
patch 就真的是修改， 只修改想訂正的地方 這樣。

以上說明若有不懂的部分歡迎再提出唷～

雅帆：
老師助教同學們好，這是我的 CodePen
想請問如果有成功的點擊到購物車的按鈕，會什麼 JS 第 49 行不會如預期地執行成功的撈到 id 的值呢?想請問我是有哪邊寫錯嗎?感謝!
助教回覆：
程式碼 33 行的地方， 圈起來的地方漏掉雙引號喔～

補上去就取得到了～

追記：
classBtn 取出來會是 btn btn-primary js-btn ，所以不管怎麼按加入購物車都會跳 alert 。
主要會取不到是因為 if 判斷式最後加了一個 return ;
把這行 return 槓掉也是可以取得到 >A < ;

Valerie:
老師助教同學們好，這是我的 CodePen
「JS 第 232 行改成中文後」，「驗證顯示不出來」，請問問題出在哪裡？ 謝謝
助教回覆：
會報錯是因為找不到 document.querySelector(.${item}) 的值， HTML class 也要修改成中文。 修改完應該就會顯示出來囉。


程翔：
老師同學們助教好 這是我的CODEPEN https://codepen.io/xxxiang/pen/KKaBEYL?editors=0010
原本預期訂單狀態可以順利更改 但是只能把未處理改成以處理
沒辦法把以處理改成未處理 程式寫法也參照老師的步驟 只是命名方式有點不同 煩請助教可以幫我除錯嗎@@
助教回覆：
這個 api 有個小小的陷阱， 就是他的 true 其實是字串不是布林值。
印為是字串， 所以判斷時要加上雙引號。 如下( 69 行)：


修改後判斷應該就正常了。 同學試著改看看哩～

SeanLiu 家興：
4/19 每日任務連結 CODEPEN
不知道為什麼畫面都會重新整理兩次，一開始以為是非同步問題，
但後來到 devTools 看，是 codepen 會發兩次，用 Debug mode 就沒問題，
想請問一下這樣理解正確嗎? 補充這位同學的 codepen 寫法不會重新整理兩次，感謝助教的協助
助教回覆：
助教們這邊開啟沒有出現重新整理兩次的問題 OAQ
同學可以錄下畫面及操作過程供我們檢視， 才能得知問題點在哪。

moitw：
助教好，這是我的 codepen 。
在購物車的刪除部分，在刪除單筆和刪除全部的綁定監聽按鈕執行的程式裡，184,199行 各塞了getCartList(); 讓畫面重新渲染，但似乎不起作用，後面放了各console.log(“test”);也會執行，就是畫面不會渲染，可否麻煩協助提示有問題的部分？
同學已找到解答：
在購物車渲染那裡加了個條件就好了

if (dataShoppingList.length == 0) {
   shoppingCartList.innerHTML = `<h3 class="
   shoppingCart-message">購物車裡沒商品囉！</h3>`;
 }
同學好棒 👏🏻👏🏻👏🏻

Pei Wang:
助教同學好
不知道可不可以問這邊…
目前所有作業都有交，最終完成到LV2，預期會顯示100%，但進度調顯示90%是正常的嗎？
助教回覆：

他是 24 小時更新一次，不是即時，所以如果你提交獎品，可以直接填寫 100% 哩~
by 洧杰老師。

Sol ：
助教好
這邊在提交最終作業有些疑問, 想請助教提點
https://codepen.io/solhuang/pen/rNjpqOV
在使用 validate.js 套件時
該如何設定當 input “change” 時 可以只跳出該 message 而不是一下跳出所有 message
看了一下範例與同學的作業, 大多都有一樣的問題, 這部分該如何處理? 感謝
助教回覆：
主要是因為 同學在 change 監聽內又再跑了一次迴圈， 才導致一個填錯通通錯誤都一並渲染出來。 助教的做法是把迴圈拿掉， 並將 keys 改為 item.name 就可以達到同學想要的效果。


Harvey ：
老師助教同學好,這是第六周的小組任務,我在時間比序方面遇到了麻煩,自己的作法(JS 58~83)沒有辦法考慮到上下午的問題,想請老師給予意見!
助教回覆：
助教寫法範例
先分上下午， 兩邊都把中文剪掉再拼起來（變成無中文的時間格式）。
如果是下午的話， 時間就 + 12 小時。
整理完時間直接 sort 就可以了。 同學可以參考一下範例。
有問題歡迎再提問哩！

Stacey Huang ：
老師助教同學們好，這是我的 CodePen,在163行~190行的函式addOrder,不曉得為什麼在送出訂單後,無法在API文件中取得送出的訂單,並在未填寫訂單資料時,按下送出按鈕,雖然會短暫出現提醒文字,但還是跳轉到Not Found的頁面，以上再麻煩助教了,謝謝
助教回覆：
因為送出訂單的 input 為 type="submit" ， 會有跳轉頁面的問題。 因此這邊只要在 addOrder 含式第一行加入  e.preventDefault(); 就可以成功送出訂單哩。
同學可以試試看， 有問題歡迎再提問唷！

Page Shih ：
老師助教同學們好，這是我的 CodePen，
這邊有跟著老師的馬拉松直播(下午場)做，「我的codepen 124-130的status取出來的是字串，所以174-178的判斷時應該是無法直接用布林值判斷」，但「老師的直播卻可以成功出現結果(2:55:00)，猜測應該是因為(status==true)不管status是什麼內容，因為都是字串的關係，所以都會回傳false，所以可以把"未處理"變成"已處理"，但若要從"已處理"變成""未處理"應該是沒辦法?」，想問下如果「字串要轉布林值的話有什麼方法」嗎？
助教回覆：
助教這邊是在程式碼 174 行的判斷是改成

if(status == "false"){
   newStatus = true;
 }else{
   newStatus = false;
 }
false 改為字串判斷， 就可以正常切換了 >A < ;
但是不建議把監聽寫在渲染函式內， 建議要關注點分離。
我是把 completeOrder 塞在 127 行， 雖然判斷成功但會重複發出請求， 建議修改訂單狀態要獨立函式寫。
同學可以試著改寫看看， 若有問題歡迎隨時提問唷！