美文网首页
jQuery實現備忘錄小應用(練手項目)

jQuery實現備忘錄小應用(練手項目)

作者: SA_Arthur | 来源:发表于2017-09-14 18:45 被阅读0次

首先感謝慕課網的實戰課程,我拖了很久才跟著寫完,現在整理一下思路。
實戰課原地址:http://coding.imooc.com/learn/list/72.html
測試地址:http://www.saarthur.com/write/myTodo_912/index.html


需求

  • 能夠添加備忘事件
  • 能夠修改、刪除備忘事件
  • 定時提醒
  • 自定義彈窗

思路

  1. 首先用HTML+CSS把靜態頁面先排起來,將界面的效果調整好,以PC端的自適應爲主;
  2. 實現添加Task的功能
    • 先將Task列表從HTML中注釋,並將單條用拼接字符串的方式作爲模板
    • 將新添加的單條Task推入localstore中儲存,并清空現有Task列表的模板並更新
  3. 查看Task詳情功能
    • 在單條Task下增加“詳情”按鈕,在點擊“詳情”后彈出該條Task的詳情框,裏面含有標題、内容、提醒時間(想情況用jq動態插入)
    • 詳情框中標題為Task列表中顯示的文字(也就是我們一開始輸入的文字),這需要從store中獲取,内容和提醒時間皆爲空
    • 爲了方便使用,增加雙擊該條Task即可打開詳情框的功能
    • 單擊遮罩層即可關閉詳情框
  4. 刪除Task功能
    • 在單條Task下增加“刪除”按鈕,在點擊“刪除”后彈出提示“是否刪除該條”,點擊“是”后,將該條數據從store中刪除
    • 更新模板
  5. Task詳情的更新
    • 點擊詳情后先清空之前的内容,並獲取當前點擊的Task的數據
    • 獲取詳情框中的標題、内容、提醒時間,并在修改后重新推入store中
    • 更新模板
  6. 定時提醒功能
    • 設置一個定時器,每隔一短時間循環一次store中的task_list的數據,將task_list中含有定時提醒數據斌且沒有提醒過的單條拿出,對比現在時間,如果時間剛好則顯示提醒
    • 提醒狀態是後面插入HTML中,并在關閉后移除,且給該條Task的增加一個已提醒過的狀態
    • 增加提醒時的音效,關閉后移除
  7. 修改彈出框
    • 替代原來刪除提示的瀏覽器自帶彈出框
    • 采用異步方法,不影響其他代碼的執行

用到的Jquery方法

  • $.Deferred
     Deferred對象就是jQuery的回調函數解決方案,所以Deferred對象的含義就是“延遲”到未來某個點在執行。
     Deferred對象的一大好處,就是它允許你自由添加多個回調函數。另一大好處,就是它允許你為多個事件指定一個回調函數,這是傳統寫法做不到的。
     Deferred對象的最大優點,就是它把這一套回調函數接口,從ajax操作擴展到了所有操作。也就是説,任何一個操作——不管是ajax操作還是本地操作,也不管是異步操作還是同步操作——都可以使用deferred對象的各種方法,指定回調函數。
     這裏使用了Deferred.resolve()和Deferred.promise()。
     jQuery規定,Deferred對象有三種執行狀態——未完成、已完成和已失敗。如果執行狀態是“已完成”(resolved),Deferred對象立刻調用done()方法指定的回調函數;如果執行狀態是“已失敗”,調用fail()方法指定的回調函數;如果執行狀態是“未完成”,則繼續等待,或者調用progress()方法指定的回調函數(jQuery 1.7版本添加)。
     前面部分的ajax操作時,Deferred對象會根據返回結果,自動改變自身的執行狀態;但是,在wait()函數中,這個執行狀態必須由程序員手動指定。dtd.resolve()的意思是,將dtd對象的執行狀態從“未完成”改爲“已完成”,從而觸發done()辦法。
     而Deferred.promise()方法。它的作用是,在原來的Deferred對象上返回另一個Deferred對象,後者只開放與改變執行狀態無關的方法(比如done()方法和fail()方法),屏蔽與改變執行狀態有關的方法(比如resolve()方法和reject()方法),從而使得執行狀態不能被改變。
    ——以上來自於阮一峰的jQuery的deferred对象详解

  • $.extend
     用一個或多個其他對象來擴展一個對象,返回被擴展的對象。
     $.extend([deep], target, object1, [objectN])

  • setInterval
     setInterval() 方法可按照指定的周期(以毫秒計)來調用函數或計算表達式。
     setInterval() 方法會不停地調用函數,直到clearInterval() 被調用或窗口被關閉。由 setInterval() 返回的ID值可用作 clearInterval() 方法的參數。
     setInterval(code,millisec[,"lang"])

  • e.preventDefault()
     event.preventDefault() 取消事件的默認動作。

  • Date().getTime()
     getTime() 函數用於使用當地時間返回當前Date對象中的時間值。該時間值表示從1970年1月1日午夜開始,到當前Date對象時,所經過的毫秒數,以格林威治時間爲準。
     該函數屬於Date對象,所有主流瀏覽器均支持該函數。

  • append()
    append() 方法在被選元素的結尾(仍然在内部)插入指定内容。
    append() 和 appendTo() 方法執行的任務相同。不同之處在於:内容和選擇器的位置,以及 append() 能夠使用函數來附加内容。
    $(selector).append(content) 和 $(content).appendTo(selector)

  • push()
    push() 方法可向數組的末尾添加一個或多個元素,並返回新的長度。
    arrayObject.push(newelement1,newelement2,....,newelementX)


2017年9月14日 第一次修改

相关文章

  • jQuery實現備忘錄小應用(練手項目)

    首先感謝慕課網的實戰課程,我拖了很久才跟著寫完,現在整理一下思路。實戰課原地址:http://coding.imo...

  • 傻傻搞不清楚,到底成為一名商業飛行員(CPL)的過程,需要花費多

    相信正在準備出國自訓的同好,應該都會為了該準備多少訓練經費傷腦筋吧;一般來說,在國外的飛行訓練費用大約包含幾個項目...

  • 2019-08-15

    練了一天,有一點小進步,但總是感覺不夠,為什麼呢,其實是努力的不足呀,沒有落實一些小項目,比如說 寫和說,這才是重...

  • 記憶交換所(1)

    記憶交換所(目錄) 聽說,有一個商店專門在給想要實現願望的人做交易,你只要付給商人滿意的代價,做為交換,他會實現你...

  • 最美時光敵不過現實

    簡書這個軟件我沒用過,身邊也應該沒有親朋好友使用,正是因為有些心情不願讓別人知道,我才選擇了在這裡記錄。 現實生活...

  • 危機 | 擁抱現實&應對現實

    ---今日事件--- 一大早,就聽同事表示他可能要被X了。。。雖然(早就猜到),但是(挺可惜的)。與此同時,也讓我...

  • 9/01

    項目:跑步 圈數:10圈blabla:每天再這麼晚睡,真的就廢了吧。。。。 項目:練字 行數:2行blabla:怎...

  • 8/27

    項目:跑步 圈數:10圈blabla:下大雨耶,跑了10圈好想吐。。。。 項目:練字 行數:2行blabla:說好...

  • Binary Tree Level Order Traversa

    解題思路 : 兩種做法: BSF: 用 queue 實現 DFS: 加上一個 counter 來紀錄每次要儲存的值...

  • 8/28

    項目:跑步    走路 圈數:10圈blabla:媽媽做了太多菜,吃多了,跑不動 項目:練字 行數:2行blabl...

网友评论

      本文标题:jQuery實現備忘錄小應用(練手項目)

      本文链接:https://www.haomeiwen.com/subject/goelsxtx.html