-1

10 秒ごとに、またボタン クリック イベントで実行したいコード ブロックがあります。コーディングの繰り返しを節約する関数を作成する必要がありますか? ページには、このコード ブロックを起動するボタンがたくさんありますが、クラス セレクターを使用してコードをトリガーできることに気付きました。コードがチェックしている値をサードパーティが変更できるようになるため、タイマー間隔が必要です。タイマーが非常に正確であることを心配する必要はありません。

コードを関数に変更するにはどうすればよいですか? 関数を作成するためのいくつかの例を見てきましたが、私の要件に合ったものは見当たりませんでした。

//This Ajax checks the current on/off status of the passed X10 code
$('img.checkStatus').each(function(i, obj) {
    $x10Device = $(this).data("x10");
    var data="url=http://192.168.0.34:81/tenHsServer/tenHsServer.aspx?      t=ab&f=DeviceStatus&d="  +       $x10Device ;

    $.ajax({                  
        url:"urlencode.php",
        data: data,
        type: "POST",
        success: function(data) { 
            myd = $('<span />').html(data).find("#Result").text();
            var Nmyd = myd.charAt(3);
            if (Nmyd == '2'){
                $('img').attr('src','lightbulbon.png')
            }
            else{
                $('img').attr('src','lightbulboff.png')};    
            },
            error: function (request, status, error) {   
                alert(request.responseText);
            }
        });
    });
}); 

考えや助けをありがとう

4

2 に答える 2

1

コードのブロックを複数の場所から呼び出す必要がある場合は、それを関数にカプセル化し、必要に応じて関数を呼び出すことをお勧めします。そう:

function someFuncName() {
    // your block of code here
}

関数の機能に応じて意味のある名前を付けてください。あなたの場合はおそらくcheckStatus適切でしょう。

「10秒程度ごとに実行したい」

setInterval()OK、そのために関数を使用できます:

var intervalId = setInterval(someFuncName, 10000); // specify delay in milliseconds
// and later, if you need to cancel the interval:
clearInterval(intervalId);

に渡す場合、その名前の後にかっこを含めないことに注意してsomeFuncNameくださいsetInterval()。これは、関数を呼び出していないためです。関数への参照を渡し、JS が指定された間隔で関数を呼び出します。setInterval()

「このコードブロックを起動するボタンがページにたくさんありますが、クラスセレクターを使用してコードをトリガーできることに気付きました」

では、指定したクラスのすべての要素のクリック ハンドラーとして関数をバインドします。

$(".classOfButtonsHere").on("click", someFuncName);
于 2013-07-02T11:21:34.470 に答える