在網(wǎng)頁(yè)開(kāi)發(fā)的過(guò)程中,經(jīng)常需要通過(guò)JavaScript來(lái)實(shí)現(xiàn)一些頁(yè)面交互效果。其中一個(gè)常見(jiàn)的需求就是在頁(yè)面中顯示歷史記錄。比如,在搜索框中輸入關(guān)鍵字后,用戶(hù)可以通過(guò)下拉列表查看之前搜索過(guò)的相關(guān)內(nèi)容。
要實(shí)現(xiàn)這個(gè)功能,可以借助瀏覽器提供的localStorage對(duì)象。localStorage是Web Storage API的一部分,用于在瀏覽器中保存鍵值對(duì),以便在同一域名下的不同頁(yè)面之間共享數(shù)據(jù)。以下是通過(guò)localStorage來(lái)顯示歷史記錄的一些代碼示例。
首先,我們可以在頁(yè)面加載完成后讀取localStorage中存儲(chǔ)的歷史記錄,并將其展示在頁(yè)面中。假設(shè)需要在搜索框中顯示之前搜索過(guò)的關(guān)鍵字,可以通過(guò)以下代碼實(shí)現(xiàn):
window.onload = function() { var searchInput = document.getElementById('searchInput'); var historyList = document.getElementById('historyList'); for (var i = 0; i< localStorage.length; i++) { if (localStorage.key(i).startsWith('search_')) { var keyword = localStorage.key(i).substr(7); var li = document.createElement('li'); li.innerHTML = keyword; historyList.appendChild(li); } } }這段代碼首先獲取了搜索框和歷史記錄列表的元素,然后遍歷localStorage中的所有鍵值對(duì),選出以"search_"開(kāi)頭的鍵,表示這是一個(gè)搜索關(guān)鍵字的歷史記錄。然后將關(guān)鍵字添加到列表中。 接下來(lái),當(dāng)用戶(hù)輸入關(guān)鍵字并提交搜索后,需要將搜索關(guān)鍵字添加到歷史記錄中。可以通過(guò)以下代碼實(shí)現(xiàn):
searchForm.onsubmit = function() { var keyword = searchInput.value.trim(); var key = 'search_' + keyword; localStorage.setItem(key, ''); var li = document.createElement('li'); li.innerHTML = keyword; historyList.appendChild(li); return false; }這段代碼給搜索表單添加了一個(gè)提交事件監(jiān)聽(tīng)器,在提交時(shí)獲取搜索框中的關(guān)鍵字,加上前綴"search_"作為localStorage的鍵,然后調(diào)用setItem方法將其保存。同時(shí),在歷史記錄列表中添加一個(gè)新的li元素。 最后,當(dāng)用戶(hù)選擇歷史記錄中的某個(gè)關(guān)鍵字時(shí),需要將其填入搜索框中,并執(zhí)行搜索功能。可以通過(guò)以下代碼實(shí)現(xiàn):
historyList.onclick = function(event) { var target = event.target; searchInput.value = target.innerHTML; searchForm.submit(); }這段代碼給歷史記錄列表添加了一個(gè)點(diǎn)擊事件監(jiān)聽(tīng)器,在點(diǎn)擊某個(gè)記錄時(shí)獲取其文本內(nèi)容,將其放入搜索框中,并提交搜索表單。 通過(guò)以上代碼,可以實(shí)現(xiàn)一個(gè)簡(jiǎn)單的歷史記錄功能。當(dāng)然,實(shí)際應(yīng)用中還可以做更多的優(yōu)化和改進(jìn),比如限制歷史記錄的顯示數(shù)量,或者在歷史記錄中顯示搜索的日期和時(shí)間等信息。不管怎樣,JavaScript提供的localStorage對(duì)象為我們實(shí)現(xiàn)這樣的功能提供了一個(gè)簡(jiǎn)單而強(qiáng)大的工具。