Java-Script-Probleme im IE7

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Java-Script-Probleme im IE7

    Hallo,

    ich habe folgendes Script im Einsatz, welches einwandfrei im Firefox, Safari (und ich vermute auch Opera) funktioniert. Im IE7 bemerkte ich jedoch gerade, dass Fehler ausgeworfen werden, die ich mir nicht erklären kann. Ich denke die Verwendung des Scripts (Bildergalerie) ist selbsterklärend. Was mag der IE daran nicht?

    Der Fehler zeigt sich wie folgt: Weder auf Aufruf (showStimme(id)) noch per resetStimme() wird irgendeine Aktion ausgelöst. Wie es scheint, mag der IE also this.document.getElementById(..) nicht?

    Quellcode

    1. <script language="JavaScript" type="text/javascript">
    2. //<![CDATA[
    3. function showStimme(id)
    4. {
    5. // Alle Stimmen definieren
    6. stimmen = new Array("a", "b", "c");
    7. // Alle Bilder der Stimmen ausgrauen
    8. for (var i = 0; i < stimmen.length; ++i)
    9. {
    10. if(this.document.getElementById(stimmen[i]))
    11. {
    12. this.document.getElementById(stimmen[i]).style.opacity = '0.5';
    13. }
    14. }
    15. // Das ausgewählte Bild hervorheben
    16. this.document.getElementById(id).style.opacity = '1';
    17. // Alle Texte verstecken
    18. for (var i = 0; i < stimmen.length; ++i)
    19. {
    20. if(this.document.getElementById('text-'+stimmen[i]))
    21. {
    22. this.document.getElementById('text-'+stimmen[i]).style.display = 'none';
    23. }
    24. }
    25. // Den ausgewählten Text hervorheben
    26. this.document.getElementById('text-'+id).style.display = 'table';
    27. // Nichts weiter tun
    28. return false;
    29. }
    30. function resetStimmen()
    31. {
    32. stimmen = new Array("a", "b", "c");
    33. // Eine zufällige Stimme auswählen und aktivieren
    34. stimme = Math.floor(Math.random() * stimmen.length);
    35. if(this.document.getElementById(stimmen[stimme]))
    36. {
    37. this.document.getElementById('text-'+stimmen[stimme]).style.display = 'table';
    38. this.document.getElementById(stimmen[stimme]).style.opacity = '1';
    39. }
    40. return false;
    41. }
    42. //]]>
    43. </script>
    Alles anzeigen
  • Mal eine Frage:
    bist du sicher, dass es die Funktion this.getElementById() in JavaScript gibt? Ich bin zwar kein JS-Guru aber so etwas habe ich noch nie gesehen. Ich kenne nur document.getElementById. Wäre nett, wenn du uns auch noch den vollständigen Seitenquelltext posten könntest, damit wir es "live" nachvollziehen können und eventuelle Lösungsvorschläge direkt ausporbieren könnten.
    Mein Vorschlag wäre einfach mal das "this" wegzulassen.
    Open Source --> Programmieren aus Leidenschaft :!:

    Ich stehe weder für privaten Support per PM noch über einen IM zur Verfügung. Danke.
  • this wegzulassen ändert leider nichts (richtet aber auch keinen Schaden an). An anderen Java-Scripts auf der Seite sind zu nennen: curvyCorners (auf der Seite nicht aktiv, nur eingebunden), jQuery (ebenso, eingebunden, inaktiv). Die Scripts temporär zu entfernen bewirkt leider auch keine Änderung.

    Beispiel-HTML-Code:

    HTML-Quellcode

    1. <img id="saliba" src="/images/stimmen/saliba.png" alt="Saliba" class="stimme" onclick="showStimme('saliba')" />