首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JavaScript 中實現數據變化即時監聽的替代方案

     編輯:程式設計綜合問答

問題

onchange 事件僅在值發生變化並失去焦點時觸發。有沒有辦法在值「不變化」或「實時」觸發檢測?

解決方案

使用 定時器輪詢 或 MutationObserver 監聽 DOM 屬性變化:

// 方案一:定時器輪詢(簡單兼容)
let lastVal = input.value;
setInterval(() => {
  if (input.value !== lastVal) {
    lastVal = input.value;
    handleChange(lastVal);
  }
}, 300);

// 方案二:input 事件(實時輸入監聽,現代瀏覽器推薦)
input.addEventListener('input', e => handleChange(e.target.value));

// 方案三:Object.defineProperty 代理數據模型(MVVM 思想)
const data = {};
Object.defineProperty(data, 'val', {
  set(v) { console.log('值變更:', v); },
  get() { return this._val; }
});

推薦使用原生 input 事件,它在用戶輸入、粘贴、拖拽等導致值改變時即時觸發,無需輪詢。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved