Statische Variable in jquery deklarieren

Bitte leiten Sie mich bezüglich der Erklärung der statischen Variablen im folgenden Programm. Ich möchte den Wert der statischen Variablen lists.counter mit einem Klick auf den Button erhöhen. Aber es funktioniert nicht.

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


   
    <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>





















lists.counter sollte sich erhöhen, wenn auf eine Schaltfläche geklickt wird, und sollte für die nachfolgenden Klicks erhöht werden. Bitte leiten Sie in dieser Angelegenheit.

1
hinzugefügt bearbeitet
Ansichten: 1
Es sollte so funktionieren, wie Sie es haben: jsbin.com/ebesad Beachten Sie, dass Sie auf der Website eine Eigenschaft erstellen listet -Funktion auf, die zwar gültig, aber für das, was Sie tun, nicht notwendig ist.
hinzugefügt der Autor T.J. Crowder, Quelle
Bei jeder Aktualisierung wird der Zähler nicht sicher erhöht.
hinzugefügt der Autor Umesh Patil, Quelle

3 Antworten

Sie können hier eine Schließung verwenden:

$(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);
    });
});​

Sie finden den Code in dieser Fiddle.

Wenn Sie interessiert sind, können Sie mehr über Schließungen hier lesen.

Update: This fiddle uses multiple buttons sharing the same counter.

5
hinzugefügt
Lieber Sammy, danke für deine Hilfe. Aber mein Code hat andere Anforderungen. Es gibt zwei Klick-Funktionen im Code, die dieselbe Variable verwenden. Diese Variable sollte sich erhöhen, wenn eine Taste gedrückt wird. Das heißt, der Gültigkeitsbereich der Variablen sollte sowohl in Funktion als auch nicht auf irgendeine Funktion beschränkt sein.
hinzugefügt der Autor user1458312, Quelle
In der Tat, dann ist mein Ansatz perfekt für Ihre Bedürfnisse :). Die Wirkung der Schließung ist, dass sie den Zählerwert über eine beliebige Anzahl von Aufrufen erfasst. Jedes Mal, wenn Sie counter() aufrufen, erhalten Sie einen erhöhten Wert counter , unabhängig von der Funktion des Aufrufers. Ich werde die Geige entsprechend aktualisieren, damit du einen anderen Blick haben kannst :)
hinzugefügt der Autor Sammy S., Quelle

Ersetzen Sie lists.Counter durch this.Counter und prüfen Sie, ob es funktioniert

oder versuche das -

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

var counter = 0;

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

Demo: http://jsfiddle.net/AxD7c/

0
hinzugefügt
Was er hat, sollte funktionieren, das macht es nur zu einer var und nicht zu einer Eigenschaft der Funktion.
hinzugefügt der Autor T.J. Crowder, Quelle
Lieber Dipaks, Bitte schlagen Sie die Lösung für die modifizierte Frage vor.
hinzugefügt der Autor user1458312, Quelle
$ (Dokument) .ready (Funktion() {var count = 1; $ ('# button'). click (function() {$ ('# counter'). Text (Anzahl ++);});});
hinzugefügt der Autor ShivarajRH, Quelle

While declaring variables in JQuery, please don't use DOT in between, instead you can use camel format to differentiate two words, so list.counter should be listCounter

Geänderter Code:

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

    listsCounter = 0;

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

        listsCounter++;

    });

});
0
hinzugefügt
Lieber Subhajit, danke für deine Hilfe, aber in unserem Code gibt es eine Variable, die zwei Funktionen gemeinsam hat und diese Variable sollte in beiden Funktionen zunehmen, kurz gesagt, es gibt eine Anforderung von statischen Variablen, wenn es möglich ist, statische Variablen zu deklarieren, die die Anforderungen unseres Codes erfüllen. Vielen Dank!!!!!
hinzugefügt der Autor user1458312, Quelle