Marc: Winziges Script funzt im IE nicht

Hallo,

ich probiere gerade etwas mit JavaScript rum und habe mir ein winziges Script geschrieben, das im Mozilla anstandslos funktioniert (Auch die JavaScript-Konsolo zeigt keinerlei Fehler an). Im IE hingegen funktioniert es überhaupt nicht und ich erhalte einen fehler:
Zeile 15
Zeichen 1
Objekt erwartet

Anbei das Script, könnt ihr mir sagen wo der Fehler liegt und ob ich das überhaupt richtig mache, ob es bessere methoden gibt oder alles was euch so einfällt, was mir als JavaScript Anfänger etwas helfen könnte.

Grüsse

Marc

=====================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<script language="JavaScript1.4">
function show(){
document.getElementById('Hallo').style.display = "block";
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<div id='Hallo' style='display:none'>Hallo, mal ein test</div>
<a href="#1" onclick="javascript:show()">Link </a>
</body>
</html>

(Zeile 15 ist der Link)

  1. Hi Marc,

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Untitled Document</title>
    <script language="JavaScript1.4">
    function show(){
    document.getElementById('Hallo').style.display = "block";
    }
    </script>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>

    <body>
    <div id='Hallo' style='display:none'>Hallo, mal ein test</div>
    <a href="#1" onclick="javascript:show()">Link </a>
    </body>
    </html>

    Ich weiß nicht genau, woran es liegen könnte, aber ich habe 3 Vorschläge:

    1. onclick zu onClick umschreiben (manchmal ist die Groß/Kleinschreibung case-sensitiv)
    2. Beim href in Zeile 15 href="#" schreiben (ein <A>-Tag mit dem Namen "1" gibt es nicht in diesem Dokument, allein schon deswegen weil es eine Zahl ist)
    3. Nach dem javascript:show() ein Sekikolon (";") setzen, ist aber meines Wissens nicht unbedingt notwendig

    (versuch's mal in dieser Reihenfolge, erst einen Punkt verändern und dann austesten...)

    Viel Glück!

    Marc Reichelt || http://www.marcreichelt.de/

    --
    tel.: 0049/6181/72224
    fax.: 0049/6181/740724
    Linux is like a wigmam - no windows, no gates and an Apache inside!!!
    1. Hallo,

      1. onclick zu onClick umschreiben (manchmal ist die Groß/Kleinschreibung case-sensitiv)

      Nein, daran liegt es leider nicht...

      1. Beim href in Zeile 15 href="#" schreiben (ein <A>-Tag mit dem Namen "1" gibt es nicht in diesem Dokument, allein schon deswegen weil es eine Zahl ist)

      Ja, ich weiss das es das nicht gibt. Das hat auch einen bestimmten Grund. Nutze ich ein exisitierendes Ziel (oder #) dann springt die Seite beim klick wieder nach ganz oben (bzw. zu dem ziel) bei einem nichte existenten Ziel verbleibt die Seite so ohne "rumgehopse". Das ist auch nicht das problem. Habe ich schon mehrfach so gemacht und hat nie Probleme bereitet...

      1. Nach dem javascript:show() ein Sekikolon (";") setzen, ist aber meines Wissens nicht unbedingt notwendig

      Nein, auch nicht. Kann es sein, das diese Zeilenangabe 15 von IE einfach fehlerhaft ist und er diese angibt weil dort die funktion quasi anfängt und der Fehler in wirklichkeit irgendwo anders liegt?

      Grüss

      Marc

  2. Hallo,

    <div id='Hallo' style='display:none'>Hallo, mal ein test</div>
    <a href="#1" onclick="javascript:show()">Link </a>

    onClick="show()" nicht javascript:show()

    Ich habe heute etwas aehnliches gemacht, das wird dir vielleicht weiterhelfen:

    function hilfe(sender) {
    var helpdiv = document.getElementById('hilfe').style;
    if (helpdiv.display=='none'){
       helpdiv.display='block';
       sender.innerHTML='Hilfe ausblenden';
    }
    else {
       helpdiv.display='none';
       sender.innerHTML='Hilfe';
    }
    }

    aufrufen mit
    <a id="showhelp" href="#" onclick="hilfe(this)">Hilfe</a>

    wirkt auf
    <div id="hilfe" name="hilfe" style="display:none;"> Mein Text </div>

    Dieter

    1. Hiho,

      onClick="show()" nicht javascript:show()

      Nein, auch das tut es leider nicht :-/

      Ich habe heute etwas aehnliches gemacht, das wird dir vielleicht weiterhelfen:

      Ich schaus mir mal an und probiere es mal etwas aus, danke. Aber eigentlich möchte ich es gerne mal selber versuchen... kann ja net hoffen des hier im Forum immer jemand ist, der mein Problem zufällig gerade gelöst hat...

      Marc

      1. Hiho,

        Hicks!

        <script type="text/javascript"
        function zeige(Element){
          document.getElementById(Element).style.display = "block";
          return false; // Das ist wichtig, wenn es der Link sein muss! //
        }
        </script>
        <div id='Hallo' style='display:none'>Hallo, mal ein test</div>

        <!-- Wenn Du es unbedingt wegen Netscape 4.x mit einem Link machen willst: (Nur geht dann das Script so nicht...) //-->

        <a href="javascript:zeige('Elementname')">Klick hier</a>

        <!-- oder: //-->

        <a href="#" onClick="zeige('Elementname')">Klick hier</a>

        <!-- Sonst genügt: //-->

        <div onClick="zeige('Hallo')">Klick hier</div>

        <!-- Wichtig: Ich habe show() durch zeige ersetzt, um nicht eventuell mit einem reserviertem wort in Konflikt zu kommen //-->

        fastix

  3. Hallo Marc,

    der IE nimmt diese Angabe eben sehr ernst:

    <script language="JavaScript1.4">

    und ignoriert den nachfolgenden Scriptblock, weil er JavaScript1.4 nicht spricht.

    Lösung:

    <script type="text/javascript">

    das ist sauber und verständlich, zumal das Language-Attribut eh mißbilligt ist und von vielen Browsern ignoriert wird.

    <a href="#1" onclick="javascript:show()">Link </a>

    besser:

    <a href="#1" onclick="show();return false">Link </a>

    onclick ist schon JavaScript und return false sorgt dafür, dass der Link, in diesem Fall der Sprung zum Anker, nicht ausgeführt wird.

    Viele Grüße

    Antje

    1. M.oin Antje,

      danke für die Antwort. Wieder etwas gelernt... Jetzt klappt es

      Grüsse
      Marc