1

我正在尝试在填充 div 的输入文本框上运行脚本。片段是这样的:

<input type="text" id="control" value="" />
<div id="displaydiv"></div>
<script>
document.getElementById("control").onkeydown = function() {
document.getElementById("displaydiv").innerHTML = this.value;   
}
</script>

这里的问题是有一个字符的滞后,即如果我输入'a',什么都不会出现。当我输入“b”时,前一个“a”会出现,依此类推。我试过用onkeyup替换onkeydown,还是有点卡顿。如何让 div 实时匹配输入文本框,而不会刷新页面和/或失去对输入框的关注?

感谢您的关注。

4

1 回答 1

2

这是因为onkeydown在键将其值添加到输入之前触发。改为使用onkeyup。它会按照你的方式工作。

编辑:不确定我是否错过了速度,如果你编辑了你的问题,但你看到的滞后是不可避免的。它与您将要获得的“实时”一样接近。真的没有那么糟糕,当我在小提琴中检查时不到半秒

Edit2:为了满足我的好奇心,我检查了 KnockoutJS 的数据绑定的性能,一个输入通过敲除更新 div 文本,另一个 div 通过你的脚本。性能是一样的。实际上,我有点惊讶淘汰赛没有引入任何明显的开销。这是小提琴

于 2012-06-06T00:12:22.103 回答