1. 程式人生 > 其它 >P2-24js-省市區三級聯動,本地儲存

P2-24js-省市區三級聯動,本地儲存

技術標籤:js

省市區三級聯動

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<select name="" id="province">
	</select>
	<select name="" id="
city"
>
</select> <select name="" id="area"> </select> <script src="machine.js"></script> <script src="citys.js"></script> <script> let province = $("#province"); let city = $("#city"
); let area = $("#area"); // 初始化省份資料 citys.forEach(item=>{ let option = document.createElement("option"); option.innerHTML = item.provinceName; province.appendChild(option) }) // 更新城市資料 function updateCity(index){ var index = index || 0; city.innerHTML = ""
; citys[index].mallCityList.forEach(item=>{ let option = document.createElement("option"); option.innerHTML = item.cityName; city.appendChild(option) }) } // 更新區資料 function updateArea(provinceIndex,cityIndex){ area.innerHTML = ""; citys[provinceIndex].mallCityList[cityIndex].mallAreaList.forEach(item=>{ let option = document.createElement("option"); option.innerHTML = item.areaName; area.appendChild(option) }) } updateCity(0) updateArea(0,0) // onchange事件當值發生改變的時候觸發的事件 // 只屬於文字框,密碼框,文字域與下拉選擇選單 // selectedIndex屬性:下拉選擇選單的Node節點獨有的屬性 // 代表當前選擇的選擇項相對於其他選擇項所處的下標 province.onchange = function(){ updateCity(this.selectedIndex) updateArea(this.selectedIndex,city.selectedIndex) } city.onchange = function(){ updateArea(province.selectedIndex,this.selectedIndex) }
</script> </body> </html>

本地儲存

寫cookie

	// 寫cookie
	function setCookie(key,value,expires){
		if (typeof expires === "number") {
            let date = new Date();
            date.setDate(date.getDate() + expires)
            document.cookie = `${key}=${value};expires=${date}`;
        } else {
            let d = new Date(expires);
            document.cookie = `${key}=${value};expires=${d}`;
        }
	}

讀cookie

function getCookie(key){
		let cookie = document.cookie;
		let arr = cookie.split("; ");
		let result = {}
		arr.forEach(item=>{
			let key = item.split("=")[0];
			let value = item.split("=")[1];
			result[key] = value;
		})

		if(key){
			return result[key];
		}
		return result;
	}

刪cookie(把儲存的到期時間設定成過去的某天)

function removeCookie(key){
	let guoqu = new Date("1970-01-01 00:00:00")
	if(key){
		document.cookie = `${key}=beybey;expires=${guoqu}`
	}
	else{
		let cookie = getCookie();

		for(let i in cookie){
			document.cookie = `${i}=beybey;expires=${guoqu}`
		}
	}
}

cookie的寫讀刪封裝

let cookie = {
    // 寫入/修改cookie
    set(key, value, expires) {
        if (typeof expires === "number") {
            let date = new Date();
            date.setDate(date.getDate() + expires)
            document.cookie = `${key}=${value};expires=${date}`;
        } else {
            let d = new Date(expires);
            document.cookie = `${key}=${value};expires=${d}`;
            //  }
        }
    },
    // 讀取cookie
    get(key) {
        let arr = document.cookie.split("; ")
        var result = {}
        arr.forEach(item => {
            let key = item.split("=")[0];
            let value = item.split("=")[1];
            result[key] = value;
        })
        return key ? result[key] : result;
    },
    // 刪除cookie
    remove(key) {
        if (this.get(key)) {
            document.cookie = key + "=18;expires=" + new Date('1999-09-09');
            return true;
        } else {
            return false;
        }
    }
}

案例

  • 省市區三級聯動
  • 天氣預報接入省市區三級聯動(介面yiketianqi.com)
  • 30天內免登入頁面
  • todulist持久化儲存