雙擊表格一行實現表格編輯,點擊空白處實現保存。html
表格可編輯相關文章在可編輯表格數組
當表格在編輯狀態的時候在頁面進行click監聽,判斷點擊區域是否爲編輯區域,若是不是編輯區域實現保存功能並取消click監聽bash
// 經過addEventListener與removeEventListener實現
document.addEventListener("click", function, false);
document.removeEventListener("click", function, false);
複製代碼
該功能點有必定難度,首先你須要判斷點擊區域是否爲表格區域,其次你要判斷點擊的區域是否爲編輯狀態的呢一行。因此我分爲兩步去實現框架
該功能點經過contains接口實現。判斷條件爲tableDom.contains(target);該接口能夠判斷target是否爲tableDom的子節點。dom
// 首先經過addEventListener 傳入點擊的dom區域
document.addEventListener(
"click",
e => {
this.judgeClickDom(e);
},
false
);
// this.bindClick是爲了取消監聽,下文會進行描述
// 判斷點擊是否爲table區域
judgeClickDom(e) {
const { target } = e;
let tableDom = document.getElementsByClassName("table");
// getElementsByClassName獲取到的是數組,必定要有下標否則會報錯
// 若是咱們點擊的區域在表格外保存數據
if (!tableDom[0].contains(target)) {
this.saveTableData();
}
},
複製代碼
該功能借助了element框架, 如何標記編輯狀態行,在可編輯表格中已有介紹函數
因爲咱們監聽click時使用的是箭頭函數,沒有函數名或者函數表達式,因此在取消監聽的時候會出現問題。 個人解決方案是給他綁定一個全局變量bindClick。 代碼以下post
// 開始監聽
document.addEventListener("click",
(this.bindClick = e => {
...
})
);
// 取消監聽
document.removeEventListener("click", this.bindClick);
複製代碼
本篇文章參考了https://www.cnblogs.com/sefaultment/p/11749802.htmlui