Avatar billede karsten_larsen Praktikant
20. december 2011 - 12:40 Der er 4 kommentarer og
1 løsning

Kalde javascript fra Codebehind - fejler med RegisterStartupScript

Kan ikke få javascriptet til at blive afviklet fra Codebehind. Javascriptet skal ændre teksten i label - men det sker ikke. Navnet på javascript skrives i stedet for.

Code:
<script type="text/javascript" language="javascript" >
        function DemoJavascript() {
            document.getElementById("Label1").innerHTML = "Så er DemoJavascript kaldt fra Codebehind";
        }
</script>

og i body
<asp:Button ID="Button1" runat="server" Text="Button" />
<asp:Label ID="Label1" runat="server" Text="Her skal teksten ændres når DemoJavascript kaldes fra codebehind"></asp:Label>


Fra Codebehind:
  Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
        Page.ClientScript.RegisterStartupScript(Me.[GetType](), "load", "DemoJavascript();")
    End Sub


Det eneste som sker at der skrives: DemoJavascript();

Hvad gør jeg galt?

??:o) karsten_larsen
Avatar billede heinzdmx Nybegynder
20. december 2011 - 12:54 #1
En løsning kunne være i stedet for at bruge RegisterStartupScript så at bruge følgende:


Button1.OnClientClick = "DemoJavascript(); return false;";

Hvor return false, sørger for at der ikke bliver lavet et post-back
Avatar billede karsten_larsen Praktikant
20. december 2011 - 13:36 #2
Heinzdmx ->

tak for forslag - jeg har overvejet noget tilsvarende men, det kan desværre ikke bruges, da jeg har beregninger i codebehind, som laves først inden javascriptet afvikles.

Bruger jeg window.onload eller onload i body afvikles javscriptet fint, bare ikke når jeg prøver at kalde det Codebehind

RegisterStartupScript fungerer fint, hvis det f.eks. laves sådan.

Page.ClientScript.RegisterStartupScript(Me.[GetType](), "load", "<script language=javascript>alert('javscript af viklet fra codebehind');</script>")

?:o) karsten_larsen
Avatar billede heinzdmx Nybegynder
20. december 2011 - 13:45 #3
Så ligner det lidt at følgende er galt:

Virker:
Page.ClientScript.RegisterStartupScript(Me.[GetType](), "load", "<script language=javascript>alert('javscript af viklet fra codebehind');</script>")

Virker ikke
Page.ClientScript.RegisterStartupScript(Me.[GetType](), "load", "DemoJavascript();")


Det ene sted har du <script> omkring, det andet sted har du ikke.

Prøv derfor med
Page.ClientScript.RegisterStartupScript(Me.[GetType](), "load", "<script language=javascript>DemoJavascript();</script>")
Avatar billede karsten_larsen Praktikant
20. december 2011 - 14:05 #4
Heinzdmx ->


Super - tusind tak for hjælpen. Vil du lave et svar?

:o) karsten_larsen
Avatar billede heinzdmx Nybegynder
20. december 2011 - 14:19 #5
Svar her :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester