2

次のプログラムで静的変数を宣言する方法について教えてください。ボタンのクリックで静的変数lists.counterの値を増やしたい。しかし、うまくいきません。

 <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="finalspecific2_list._Default" %>


   <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
    <script src="Scripts/jquery-1.4.1-vsdoc.js" type="text/javascript"></script>
    <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
    <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>

<script type="text/javascript">

    $(document).ready(function lists() {

        var list = $('#myList li:gt(0)');


        list.hide();
        lists.counter = 0;
        var username = $("#<%= uname.ClientID %>").val();
        var pwd = $("#<%= pwd.ClientID %>").val();


        $("#<%= Login.ClientID %>").click(function () {


            lists.counter++;


            alert(lists.counter);
            lists.counter++;


        });




        $("#<%= Button1.ClientID %>").click(function () {

            {

                    alert(lists.counter);



                    }




                });
    });



  </script>

</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">




<asp:Button ID="Login" runat="server" Text="Login" />
<asp:Button ID="Button1" runat="server" Text="Login" />





</ul>





</asp:Content>

いずれかのボタンがクリックされると、lists.counter が増加し、その後のクリックで増加するはずです。この件についてご案内いたします。

4

3 に答える 3

5

ここでクロージャーを使用できます。

$(document).ready(function() {
    // The actual counter is contained in the counter closure.
    // You can create new independent counters by simply assigning 
    // the function to a new variable
    function makeCounter() {
        var count = 0;
        return function() {
            count++;
            return count;
        };
    };

    // This variable contains a counter instance
    // The counter is shared among all calls regardless of the caller
    var counter = makeCounter();

    // The handler is bound to multiple buttons separated by commas
    $("#button, #another_button, #yet_another_button").click(function () {
       var i = counter();
       console.log("The counter now is at " + i);

       // Probably update your counter element
       // $("#counter").text(i);
    });
});​

このフィドルでコードを見つけることができます。

興味がある場合は、ここで閉鎖について詳しく読むことができます。

更新: このフィドルは、同じカウンターを共有する複数のボタンを使用します。

于 2012-06-18T07:07:43.590 に答える
0

と交換lists.Counterしてthis.Counter、機能するかどうかを確認します

またはこれを試してください-

<input id="button" type="button" value="button" />

var counter = 0;

$("#button").click(function () {
   console.log(counter++);
});

デモ: http: //jsfiddle.net/AxD7c/

于 2012-06-18T06:41:21.283 に答える
0

JQuery で変数を宣言するときは、間に DOT を使用しないでください。代わりに、キャメル形式を使用して 2 つの単語を区別できますlist.counterlistCounter

変更されたコード:

$(document).ready(function lists() {

    listsCounter = 0;

    $("#<%= Login.ClientID %>").click(function () {

        listsCounter++;

    });

});
于 2012-06-18T06:46:24.103 に答える