無理やりやればこんな感じ
javascript
1<input type="text" id="test" value="test1" />
2<script>
3const test= document.getElementById('test');
4let value=test.getAttribute('value');
5test.addEventListener('input', () => {
6 console.log("testが変更されたときの処理");
7});
8Object.defineProperty(test, "value", {
9get: () => value,
10set: newValue => {
11 const oldValue = value;
12 value = newValue;
13 test.dispatchEvent(new Event('input'));
14 console.log(`${oldValue}→${value}`);
15}
16});
17test.value="test2";
18test.value="test3";
19</script>
調整版
javascript
1<input type="text" id="test" value="test1" />
2<script>
3const test= document.getElementById('test');
4let value=test.getAttribute('value');
5test.addEventListener('input', () => {
6 console.log("testが変更されたときの処理");
7});
8Object.defineProperty(test, "value", {
9get: () => value,
10set: newValue => {
11 const oldValue = value;
12 value = newValue;
13 test.dispatchEvent(new Event('input'));
14 test.setAttribute('value',newValue);
15 console.log(`${oldValue}→${value}`);
16},
17});
18let count=1;
19let timerId=setInterval(()=>{
20 test.value=`test${++count}`;
21 if(count>5) clearInterval(timerId);
22},1000);
23</script>
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2022/01/14 08:56 編集