3

最初に言いたいのは、私は JavaScript の世界の初心者です。

ボタンの関数を書きたい:

when button is pushed -> x=0 ; post(x); display x;
when button is released -> x=1; post(x); display x;
when button is hold down -> while hold: 
            if(x=0){post(x); display x; x++}          
            if(x=1){post(x); display x; x--} 

これは私がこれまでに思いついたものです:

http://pastebin.com/1myT891h

助けていただければ幸いです。

4

3 に答える 3

2

このフィドルを試してください:

HTML:

<button id="button">Click here</button><br/>
Status: <span id="status"></span>

Javascript:

observeTriState("#button", function(state) {
    var states = { '0':'Push', '1':'Release', '2':'Hold Down' };

    $("#status").text(states[state]);
}, 500);

function observeTriState(selector, callback, holdDelay) {
    var mouseDown = false;
    var mouseIn = false;
    var interval;

    function checkStatus() {
        if (mouseDown && mouseIn) {
            callback(2)
        }
    }

    $(selector).mousedown(function() {
        callback(0);
        mouseDown = true; 
        interval = setInterval(checkStatus, holdDelay); 
    }).mouseup(function() {
        mouseDown = false;
        callback(1);
        clearInterval(interval);
    }).mouseenter(function() {
        mouseIn = true;
    }).mouseleave(function() {
        mouseIn = false;
        mouseDown = false;
        clearInterval(interval);
        callback(1);
    });
}
于 2012-11-29T15:42:52.160 に答える
1

次のjsFiddleを確認してください。それはあなたが探していることをします(少なくとも、そうであることを願っています)。不明な点がある場合はお知らせください。少し解決できるかどうかを確認します。

http://jsfiddle.net/s9nUr/

実際の動作を見ることに興味がない場合は、フィドルのコードを次に示します。jQueryの使用に注意してください。

var x= 0;
var interval;

var push = function(val) {

}

var hold = function() {
    if ( x === 0 ) {
        console.log('x is 0');    
    }
    if ( x === 1 ) {
        console.log('x is 1');        
    }
}

$('#myButton').on('mousedown', function() {
    x= 0;
    push(x); 

    interval = setInterval(hold, 500);
});

$('#myButton').on('mouseup', function() {
    x = 1;        
    push(x); 

    clearInterval(interval);
});
于 2012-11-29T15:29:17.917 に答える
0

おそらく、値とアクションの 2 つの引数を持つ 1 つの関数を作成します。などwhen button is pushed -> myfunction(x,"pushed") ...など。

于 2012-11-29T15:12:45.613 に答える