Frage

Ich habe diese Probe unter:

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

Wenn ich Post-back auf der Seite klicken, fand ich heraus, dass die Variable initialisiert -die auf die Funktion definiert ist itself- seinen Wert verliert und immer ‚undefined‘ wieder.

Ist es möglich, diese statischen Werte zu halten, sobald sie definiert sind und sie von irgendwelchen Post Rücken auf der Seite nicht betroffen machen?

War es hilfreich?

Lösung

Man könnte sie als Query-String hinzufügen oder sie in einem Cookie halten.

Andere Tipps

Vielleicht wollen Sie so etwas wie dies zu tun. Ich denke auch, dass Sie Testfunktion mit Testobjekt sind verwirrend.

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

Sie Javascript wird erneut ausgeführt auf Postbacks wie die Seite neu geladen wird (es sei denn, Sie Update-Panels verwenden).

einen Client-Seite Wert erhalten, schreiben Sie den Wert in ein asp versteckten Feld JS verwenden, und Sie machen nicht das Javascript, wenn IsPostBack wahr ist, so dass es nicht überschrieben bekommt auf Postback

Ich denke, mit Partial-Post zurück ist ein Weg, wie gut.

Wenn es nicht möglich ist, nur mit Java-Skript Ich denke, Cookies eine andere Art und Weise so lang sein können, da sie nicht von durch den Benutzer gedreht werden.

Mein Gefühl ist der beste Weg, um die Seite in einer Weise zu gestalten, ist, dass ich nicht brauchen würde, um es zu speichern:)

Sie könnten ein verstecktes Feld hinzufügen und den Wert dieser eingestellt? Ich denke, diese Art und Weise in dem Ansichtszustand erhalten bleiben werden, und Sie können den Wert zurück in Ihre Variable mit so etwas wie laden:

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top