2012-06-18 7 views
1

다음 프로그램에서 정적 변수 선언과 관련하여 도움을주십시오. 버튼 클릭으로 정적 변수 lists.counter의 값을 증가시키고 싶습니다. 하지만 작동하지 않습니다.jquery에서 정적 변수 선언

<%@ 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가 증가해야하고 이후 클릭에 대해서는 increament가 증가해야합니다. 친절하게 안내합니다.

+0

새로 고침 할 때마다 카운터가 증가하지 않습니다. –

+0

당신이 가지고있는 방식대로 작동해야합니다 : http://jsbin.com/ebesad 당신이하고있는 일에 대해 유효하지만 필수적이지 않은'lists' 함수에 속성을 생성하고 있음을 주목하십시오. –

답변

0

this.Counterlists.Counter를 교체하고

를 작동하는지 확인하거나 노력이 -

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

var counter = 0; 

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

데모 : JQuery와 변수를 선언하는 동안 http://jsfiddle.net/AxD7c/

+0

그가 무엇을해야만하는지, 이것은 단지 함수의 속성이 아니라 'var'가되게합니다. –

+0

친애하는 Dipaks, 친절하게 수정 된 질문에 대한 해결책을 제안합니다. – user1458312

+0

$ (document) .ready (\t var count = 1;), }); – ShivarajRH

0

사이에서 DOT를 사용하지 마십시오, 대신 낙타 형식을 사용하여 두 단어를 구별 할 수 있으므로 list.counterlistCounter

이어야합니다.

변경된 코드 :

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

    listsCounter = 0; 

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

     listsCounter++; 

    }); 

}); 
+0

친애하는 Subhajit, 귀하의 도움을 주셔서 감사하지만 우리의 코드에 두 가지 기능에 공통적 인 하나의 변수가 있으며,이 변수는 두 가지 기능 모두에서 단축되어야합니다. 가능한 한 정적 변수의 요구 사항이 친절하게 우리의 코드의 요구 사항 . 감사!!!!! – user1458312

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

당신은 this 바이올린의 코드를 찾을 수 있습니다.

클로저에 대한 자세한 내용은 here을 참조하십시오.

업데이트 :This fiddle은 동일한 카운터를 공유하는 여러 개의 버튼을 사용합니다.

+0

친애하는 새미, 도와 줘서 고마워. 하지만 내 코드에는 다른 요구 사항이 있습니다. 같은 변수를 사용하는 코드에는 두 번의 클릭 기능이 있으며 버튼을 누르면이 변수가 증가합니다. 변수의 범위는 함수 둘 다에 있어야하며 함수 하나에 국한되지 않아야합니다. – user1458312

+0

실제로, 나의 접근 방식은 당신의 필요에 완벽합니다. :) 종결의 효과는 호출의 모든 양에 대한 카운터 값을 캡처한다는 것입니다. 'counter()'를 호출 할 때마다 호출자 함수에 관계없이 증가 된 'counter'값을 얻습니다. 나는 당신이 다른 모양을 가질 수 있도록 그에 따라 바이올린을 업데이트 할 것이다 :) –