Avatar billede espeholt_jr Nybegynder
11. maj 2009 - 21:05 Der er 13 kommentarer

JavaScript virker kun i IE.

Hej,

Har flg. kode:

<td id="TimeStamp">
                        <script type="text/javascript">
                    <!--
                               
                            function GetMonth(intMonth) {
                                var MonthArray = new Array("januar", "februar", "marts",
                              "april", "maj", "juni",
                              "juli", "august", "september",
                              "oktober", "november", "december")

                                return MonthArray[intMonth]
                            }

                            function GetDay(intDay) {
                                var DayArray = new Array("Søndag", "Mandag", "Tirsdag", "Onsdag",
                        "Torsdag", "Fredag", "Lørdag")

                                return DayArray[intDay]
                            }

                            function writeTimeStamp() {
                                var currentTime = new Date()

                                var month = currentTime.getMonth()
                                var date = currentTime.getDate()
                                var day = currentTime.getDay()
                                var year = currentTime.getFullYear()
                                var hour = currentTime.getHours()
                                var minutes = currentTime.getMinutes()
                                var seconds = currentTime.getSeconds()

                                document.getElementById("TimeStamp").innerHTML = GetDay(day) + " den " + date + ". " + GetMonth(month) + " " + year + " kl. " + ((hour < 10) ? "0" : "") + hour + ":" + ((minutes < 10) ? "0" : "") + minutes
                            }

                            writeTimeStamp()
                            setInterval('writeTimeStamp()', 1000)
                    //-->
    </script>
                            <!--Lørdag den 11. oktober 2008 kl. 22:00-->
                        </td>

som er indeni noget andet kode. Den skriver bare hvilken dag det er, til element "TimeStamp" som koden er i. Dette virker bare kun i IE. Har ikke så meget forstand på JavaScript så lidt hjælp ville være fedt :)
Avatar billede erikjacobsen Ekspert
11. maj 2009 - 21:23 #1
Dit <td>-element er ikke oprettet (i alle browsere) på det tidspunkt du bruger det. Put din Javascript kode i onload-hændelsen på <body>, eller evt. helt i bunden af din side.
Avatar billede espeholt_jr Nybegynder
11. maj 2009 - 23:33 #2
Synes jeg har prøvet at putte det i onload, men kunne ikke umildbart få det til at virke. Kan du give et eksempel? :)
Avatar billede erikjacobsen Ekspert
12. maj 2009 - 08:33 #3
Kan du ikke bare vise hvad du har gjort?
Avatar billede espeholt_jr Nybegynder
12. maj 2009 - 19:26 #4
Har fundet ud af flg. kode virker når siden bliver læst som text/html men ikke når den bliver læst som application/xhtml+xml.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Test</title>
    <meta http-equiv="Content-type" content="application/xhtml+xml;charset=UTF-8" />
   
</head>
<body onload="OnLoad()">
    <div id="Center">

                <table cellpadding="0" style="width: 100%;">
                    <tr>
                        <td id="TimeStamp">
                        <script type="text/javascript">

                    <!--
                               
                            function GetMonth(intMonth) {
                                var MonthArray = new Array("januar", "februar", "marts",
                              "april", "maj", "juni",
                              "juli", "august", "september",
                              "oktober", "november", "december")

                                return MonthArray[intMonth]
                            }

                            function GetDay(intDay) {
                                var DayArray = new Array("Søndag", "Mandag", "Tirsdag", "Onsdag",
                        "Torsdag", "Fredag", "Lørdag")

                                return DayArray[intDay]
                            }

                            function writeTimeStamp() {
                                var currentTime = new Date()

                                var month = currentTime.getMonth()
                                var date = currentTime.getDate()
                                var day = currentTime.getDay()
                                var year = currentTime.getFullYear()
                                var hour = currentTime.getHours()
                                var minutes = currentTime.getMinutes()
                                var seconds = currentTime.getSeconds()

                                document.getElementById("TimeStamp").innerHTML = GetDay(day) + " den " + date + ". " + GetMonth(month) + " " + year + " kl. " + ((hour < 10) ? "0" : "") + hour + ":" + ((minutes < 10) ? "0" : "") + minutes
                            }

                            function OnLoad() {
                                writeTimeStamp()
                                setInterval('writeTimeStamp()', 1000)
                            }
                    //-->
    </script>
                            <!--Lørdag den 11. oktober 2008 kl. 22:00-->
                        </td>
                    </tr>
                </table>
</body>
</html>
Avatar billede erikjacobsen Ekspert
12. maj 2009 - 19:58 #5
Der er ikke noget, der hedder innerHTML i XHTML - selv om det nogle gange virker alligevel. Du er vel bekendt med hvad XHTML er, når du nu har valgt at bruge det?
Avatar billede espeholt_jr Nybegynder
12. maj 2009 - 20:26 #6
Ja, men er stadig i læringsprocessen. Anyway, er selvfølgelig removeChild, append osv. jeg skal bruge ;-)
Avatar billede espeholt_jr Nybegynder
12. maj 2009 - 20:30 #7
Nu ser mit script således ud: Virker i IE og Safari, men ikke Firefox

<script type="text/javascript">
                    <!--
                   
                    var text = document.createTextNode("")

        function GetMonth(intMonth) {
            var MonthArray = new Array("januar", "februar", "marts",
                              "april", "maj", "juni",
                              "juli", "august", "september",
                              "oktober", "november", "december")

            return MonthArray[intMonth]
        }

        function GetDay(intDay) {
            var DayArray = new Array("Søndag", "Mandag", "Tirsdag", "Onsdag",
                        "Torsdag", "Fredag", "Lørdag")

            return DayArray[intDay]
        }

        function writeTimeStamp() {
            var currentTime = new Date()

            var month = currentTime.getMonth()
            var date = currentTime.getDate()
            var day = currentTime.getDay()
            var year = currentTime.getFullYear()
            var hour = currentTime.getHours()
            var minutes = currentTime.getMinutes()
            var seconds = currentTime.getSeconds()
           
            text.data = (GetDay(day) + " den " + date + ". " + GetMonth(month) + " " + year + " kl. " + ((hour < 10) ? "0" : "") + hour + ":" + ((minutes < 10) ? "0" : "") + minutes)
        }
       
        function OnLoad() {
            TimeStamp.appendChild(text)
            writeTimeStamp()
            setInterval('writeTimeStamp()', 1000)
        }
                    //-->
    </script>
Avatar billede espeholt_jr Nybegynder
12. maj 2009 - 20:43 #8
og kan se det er fordi Safari og IE ikke vil kører Standard mode (asp.net script der fucker lidt)
Avatar billede erikjacobsen Ekspert
12. maj 2009 - 20:59 #9
Et link til siden, og vi finder nok ud af det.
Avatar billede erikjacobsen Ekspert
12. maj 2009 - 21:11 #10
Hvor kommer din variabel  TimeStamp fra ?
Avatar billede espeholt_jr Nybegynder
12. maj 2009 - 21:39 #11
TimeStamp er <td id="TimeStamp"> den skulle være god nok i følge intellisense. Men har da for en sikkerheds skyld lige tjekket med document.getElementById med samme resultat.

Er en side jeg laver for en ven, og han er ikke så interesseret i at den kommer ud inden. Men hvis jeg evt. kan kontakte dig på anden vis og så jeg poster svaret ind her bagefter.
Avatar billede erikjacobsen Ekspert
12. maj 2009 - 21:45 #12
id="TimeStamp" giver ikke en variabel, der hedder TimeStamp.
Du skal bruge document.getElementById

Og som udgangspunkt virker det fint, det du laver.

Det er heller ikke fordi vi skal se alt, men det hjælper altså hvis du kan lægge den stump af siden, der ikke virker, et sted så vi kan se den ;)
Avatar billede espeholt_jr Nybegynder
14. maj 2009 - 11:40 #13
Det virker ellers ganske udemærket i IE men er vel til tider også en lidt underlig browser.

Kaster lige noget op, men det der gør forskellen så vidt jeg kan se, er når dokumentet bliver sendt som application/xml+xhtml. Der vil javascript ikke virke, så må benytte et eller andet stadigvæk som ikke er i xhtml.
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