1

私はこのイベントリスナーを持っています:

input_1.addEventListener('input',function(){
    updateFromInput(1);
},false);

スライダーの位置を制御します。
今、入力に「100」と入力したい場合、スライダーは「1」の位置にジャンプし、次に「10」にジャンプし、最後に「100」の位置にジャンプします。
かなり不格好なので、もっと自然な感じにしたいと思います。

私は今ではJSを読むのにかなり慣れていますが、それを書くのはまだかなり初心者です。

このタイプのタイマーに必要なロジックを理解しています(タイマーが750ms updateFromInputより大きい場合)、JavaScriptでコーディングを開始する方法が少しぼんやりしています。
確かに、このタイプのタイマー機能は、同じくらい多くの開発者によって100万回と1回実行されています...例を見つけるのに苦労しています:)

コード、リンク、または例をいただければ幸いです。

4

2 に答える 2

2

通常の方法はタイマーを設定することです。別のキーストロークが表示された場合は、前のタイマーをキャンセルして新しいタイマーを設定します。例:

var timer = 0;
input_1.addEventListener('input',function(){
    maybeUpdateFromInput(1);
},false);

function maybeUpdateFromInput(val) {
    if (timer) {
        clearTimeout(timer);
    }
    timer = setTimeout(function() {
        updateFromInput(val);
        timer = 0;
    }, 50); // 50 = 50ms, you may want 75, 100, even 125
}

これにより、更新が50ミリ秒(setTimeout呼び出しの値)遅れます。50ミリ秒を超えて入力が表示されない場合は、更新されます。

于 2012-06-28T14:43:53.953 に答える
1

これを処理するためのより良い方法は、キーダウンとキーアップの両方であると思います。そうすれば、ユーザーがキーを押したままにした場合でも、誤解されることはありません。このjsFiddleを見てください:

http://jsfiddle.net/9c46B/3/

明らかに、(HTMLのインラインハンドラーの代わりに)イベントリスナーを追加するように変更する必要があります。そして明らかに、アラートを好きなように変更します。しかし、うまくいけば、これが役立ち、あなたが探しているものです!

于 2012-06-28T14:50:25.660 に答える