¿Cómo preservar los valores de variables estáticas en funciones de JavaScript en la devolución de datos?

StackOverflow https://stackoverflow.com/questions/2146917

Pregunta

Tengo esta muestra a continuación:

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">

    <script type="text/javascript">
function test(){

if (test.initialized=='undefined'){
    test.initialized = 'true';
    }

alert(test.initialized);

};
    </script>

</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <asp:Button ID="btnPostBack" runat="server" Text="Post back" OnClientClick="test()" />
</asp:Content>

Cuando hago clic después de la vuelta de la página, descubrí que la variable inicializada -que se define en función de la misma- está perdiendo su valor y convertirse en 'indefinido' de nuevo.

¿Es posible mantener esos valores estáticos una vez que se definen y hacer que se ven afectados de alguna espaldas colocar en la página?

¿Fue útil?

Solución

Se podría añadir como una cadena de consulta o mantenerlos en una cookie.

Otros consejos

Tal vez usted quiere hacer algo como esto. También pienso que usted está confundiendo la función de prueba con el objeto de prueba.

var initialized = false;
function test(){
    if ( !initialized){
        initialized = true;
    }
};
            alert(initialized); // false
            test();
            alert(initialized); //true

Javascript va a ser re-ejecutado en la devolución de datos como las recargas de la página (a menos que esté utilizando paneles de actualización).

para preservar un valor de cliente, escriba el valor en un campo oculto asp usando JS, y no hagan al Javascript si IsPostBack es cierto por lo que no será sobreescrito en la devolución de datos

Creo que el uso posterior parcial post es una manera también.

Si no es posible, sólo mediante el uso de Java Script Creo que las cookies pueden ser otra forma, siempre y cuando no se convierten de por el usuario.

Mi sensación es la mejor forma de hacerlo es diseñar la página de una manera que no necesitaría para almacenarla:)

Se podría añadir un campo oculto y establecer el valor de esta? Creo que de esta manera va a ser conservado en el estado de vista, y que es posible cargar la espalda valor en la variable con algo como:

var p = '<% = blah.Text%>';

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top