2012-06-18 3 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 должен увеличиваться при нажатии любой из кнопок и увеличении для последующих кликов. Незлое руководство по этому вопросу.

+0

При каждом обновлении счетчик не будет увеличен точно. –

+0

Он должен работать так, как у вас есть: http://jsbin.com/ebesad Обратите внимание, что вы создаете свойство в функции 'lists', которая действительна, но не нужна для того, что вы делаете. –

ответ

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/

+0

Что он должен работать, это просто делает его «var», а не свойство функции. –

+0

Уважаемые Дипаки, любезно предложите решение для измененного вопроса. – user1458312

+0

$ (документ) .ready (функция() { \t счета вар = 1;. $ ('# кнопка') нажмите (функция() { $ ('# счетчик') текст (посчитайте ++);. }); }); – ShivarajRH

0

Хотя объявления переменных в JQuery, пожалуйста, не используйте DOT между ними, вместо этого вы можете использовать формат верблюда для разграничения двух слов, поэтому list.counter должен быть listCounter

Изменен код:

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

    listsCounter = 0; 

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

     listsCounter++; 

    }); 

}); 
+0

Уважаемый Субхаджит, спасибо за вашу помощь, но в нашем коде есть одна переменная, общая для двух функций, и эта переменная должна увеличиваться в обеих функциях, короче говоря, существует потребность в статической переменной, если это возможно, любезное руководство относительно объявления статической переменной, которая удовлетворяет требованиям нашего кода , Благодаря!!!!! – 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' независимо от функции вызывающего абонента. Я буду обновлять скрипку соответственно, чтобы вы могли посмотреть еще раз :) –

Смежные вопросы