الإعلان عن متغير ثابت في مسج

يرجى توجيه لي فيما يتعلق بإعلان متغير ثابت في البرنامج التالي. أريد زيادة قيمة المتغيرات statist lists.counter بنقرة زر. لكن لا يعمل.

 <%@ 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 عند النقر على أي زر من الأزرار ، وكذلك زيادة عدد النقرات التالية. يرجى توجيه في هذه المسألة.

1
يجب أن تعمل بالطريقة التي تستخدمها: jsbin.com/ebesad لاحظ أنك تقوم بإنشاء خاصية على قوائم ، وهي صالحة ولكنها غير ضرورية لما تفعله.
وأضاف المؤلف T.J. Crowder, مصدر
على كل تحديث ، لن يتم زيادة العداد بالتأكيد.
وأضاف المؤلف Umesh Patil, مصدر

3 إجابة

يمكنك استخدام الإغلاق هنا:

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

يمكنك العثور على الشفرة في هذا العنصر .

إذا كنت مهتمًا ، فيمكنك قراءة المزيد حول الإغلاق هنا .

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

5
وأضاف
عزيزي سامي ، شكرا لمساعدتكم. لكن الرمز الخاص بي لديه متطلبات مختلفة. توجد وظيفتان للنقر في الكود باستخدام المتغير نفسه ويجب زيادة هذا المتغير إذا تم الضغط على أي زر. هذا هو نطاق المتغير يجب أن يكون في كلتا الوظيفتين ولا يقتصر على أي وظيفة واحدة.
وأضاف المؤلف user1458312, مصدر
في الواقع ، ثم بلدي هو نهج مثالي لاحتياجاتك :). تأثير الإغلاق هو أنه يلتقط قيمة العداد على أي كمية من الدعوات. في أي وقت تتصل به counter() ، ستحصل على قيمة counter أكبر بغض النظر عن وظيفة المتصل. سوف تحديث الكمان وفقا لذلك حتى تتمكن من الحصول على نظرة أخرى :)
وأضاف المؤلف Sammy S., مصدر

استبدل lists.Counter بـ this.Counter وتحقق من أنه يعمل

أو جرب هذا -

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

var counter = 0;

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

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

0
وأضاف
ما يجب عليه العمل ، وهذا يجعله var فقط بدلاً من خاصية للدالة.
وأضاف المؤلف T.J. Crowder, مصدر
عزيزي Dipaks ، يرجى اقتراح الحل للسؤال المعدل.
وأضاف المؤلف user1458312, مصدر
$ (مستند). ready (function() {var count = 1؛ $ ('# button'). انقر فوق (function() {$ ('# counter'). text (count ++)؛})؛})؛
وأضاف المؤلف ShivarajRH, مصدر

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

رمز تم تغييره:

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

    listsCounter = 0;

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

        listsCounter++;

    });

});
0
وأضاف
عزيزي Subhajit ، شكرا لمساعدتكم ولكن في رمزنا هناك متغير واحد مشترك لوظيفة اثنين ويجب أن يزيد هذا المتغير في كلتا الوظيفتين ، باختصار هناك متطلب من متغير ثابت إذا كان بالإمكان توجيه مرشد فيما يتعلق بإعلان المتغير الثابت الذي يلبي متطلبات الكود الخاص بنا. شكر!!!!!
وأضاف المؤلف user1458312, مصدر