Avatar billede bongii Nybegynder
25. marts 2007 - 14:07 Der er 9 kommentarer og
1 løsning

Kald javascript funktion

Hvis jeg nu har en java script funktion jeg vil kalde (uden at klikke på en knap) hvordan gør jeg det?
Dette virker ikke:

<script language="Javascript" type="text/javascript">
addRow();
</script>
Avatar billede prof2 Nybegynder
25. marts 2007 - 15:18 #1
prøv at skriv dit metodenavn med lowercase letters. Det skal man vist huske i javascript.
Avatar billede crazysnap Seniormester
25. marts 2007 - 16:51 #2
Hej bongii,


Det kommer lidt an på hvornår den metode skal kaldes. Men nedenfor giver jeg et par eksempler på hvordan forskellige javascript metoder kan kaldes når siden loades:


<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <script type="text/JavaScript">
        function Method1()
        {
            alert("method1");
        }
       
        function Method2()
        {
            alert("method2");
        }
       
        function Method3()
        {
            alert("method3");
        }
       
        //Method2 er den første metode der kaldes (den kaldes hver gang scriptet loades på ny)
        Method2();
       
        //Method3 bliver kaldt som nr 2 og hver gang siden loades (jf. onload event'en)
        window.onload = new function() { Method3(); };
       
        //Method1 er den sidste metode som kaldes (også ved onload event'en)
        </script>
    </head>
    <body onload="Method1();">
        <div>HTML script goes here</div>
    </body>
</html>


prof2 udmelder at dit metodekald måske skal være i lowercase, dette er dog ikke sandt og ville give fejl i dit javascript hvis metoden ikke var definere i lowercase. Dit metodekald skal være præcis i den case som metoden er defineret i. :)


Hvis dette eksempel ikke er nok hjælp må du lige uddybe din problemstilling lidt nærmere. :)


Mvh.

- Snap
Avatar billede prof2 Nybegynder
25. marts 2007 - 18:24 #3
Snap> Du misforstod mig, men jeg tog fejl alligevel. Jeg mente han skulle definere sin metode i lowercase også, men det er ikke nødvendig, blot noget jeg havde opfattet forkert ;)
Avatar billede crazysnap Seniormester
25. marts 2007 - 18:42 #4
Hej prof2,

Og ahh ja, det kan jeg jo godt se nu når jeg læser din kommentar igen (at det var det du mente). Jeg sluttede (fejlagtigt) nok at du mente metodekaldet idet det er det eneste bongii havde pasted med i sin spørgsmåls-beskrivelse. :)


Mvh.

- Snap :)
Avatar billede bongii Nybegynder
25. marts 2007 - 19:08 #5
Jeg har en funktion addRow() der tilføjer et ROW i en tabel. Addrov bliver aktiveret via en knap, men hvis valideringen ikke er korrekt, skal den køres x-antal gange. 

<%if request.form(Cstr("Antal"&i)) <> ""  then%>
Her skal java script funktionen køres.
<%end if%>
Avatar billede crazysnap Seniormester
25. marts 2007 - 19:09 #6
Og


window.onload = new function() { Method3(); };


skal self ændres til:



window.onload = function() { Method3(); };



Ved ikke hvorfor jeg kommer til at proppe 'new' ind der så ofte! :)


Mvh.

- Snap
Avatar billede bongii Nybegynder
25. marts 2007 - 19:53 #7
Snap: Den vil kun loade funktionen én gang. Burde man ikke kunne placere funktionen  window.onload = function() { addRow(); }; i en asp loop og kalde den alle de gange der er nødvendigt?
Avatar billede crazysnap Seniormester
25. marts 2007 - 20:18 #8
Hej bongii,


Du kan ihvertfald ikke placere window.onload i et loop for at kalde metoden den indeholder flere gange. Så registrerer du bare onload event'en til den metode x antal gange. Jeg ved ikke hvordan du ville gøre det i ASP eller hvorfor du overhovedet vil loop'e med ASP og ikke bare javascript. Hvis det er fordi du har en variabel på serversiden indeholdende antallet af gange der skal loopes kan du jo sagtens få fat i den via javascript.

Nedenstående eksempel gør netop dette, altså får fat i en variabel på serversiden (intAntal) og kalder addRow() det antal gange som intAntal er sat til.


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="try.aspx.cs" Inherits="Method_loop_try" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
    <script type="text/javascript">
   
    function addRow()
    {
        alert('addRow');
    }
   
    function performCheck()
    {
        var antal = <%= intAntal %>;
       
        for(var i = 0; i < antal; i++)
        {
            addRow();
        }
    }
   
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <table>
            <tr>
                <td>
                    <input type="button" value="click" onclick="performCheck();" />
                </td>
            </tr>
        </table>
    </div>
    </form>
</body>
</html>


Eksemplet er lavet i asp.NET med c# som codebehind. Når der klikkes på knappen kalder den addRow() intAntal gange.


Mvh.

- Snap
Avatar billede bongii Nybegynder
25. marts 2007 - 20:29 #9
Kanon, det virker!
Avatar billede crazysnap Seniormester
25. marts 2007 - 20:31 #10
Jamen det var da dejligt at høre, så smider jeg lige et svar! :)


Mvh.

- Snap :)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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