第 17 课 16 / 20 | 编码:L17-19
代码推演

程序改值会自动刷新计数吗?

<label for="text">留言</label><input id="text">
<p id="count">0</p>
<button id="fill" type="button">填入示例</button>
<script>
  const input = document.querySelector('#text');
  const count = document.querySelector('#count');
  input.addEventListener('input', () => { count.textContent = input.value.length; });
  document.querySelector('#fill').addEventListener('click', () => { input.value = 'HTML'; });
</script>

提问:直接点击“填入示例”,输入框和计数分别显示什么?为什么手动输入能更新计数,而程序赋值没有?怎样避免两条路径遗漏状态同步?

查看参考解析

输入框 HTML,计数仍为 0。程序设置 value 不自动触发 input;将计数更新集中到函数,在用户输入和程序填充后都调用,或明确派发相应事件。