Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 26
  1. #1
    carolina ist offline Jungspund
    registriert
    01-03-2005
    Beiträge
    16

    layer problem mit Firefox: Carolina braucht Hilfe

    Hallo,

    ich belege in der Schule einen Javascriptkurs +PHP sollen wir auch lernen. und ich habe ein Problem .

    Beschreibung:
    auf ein Bild lege ich verschiedene ICONs. Wenn ich mit der Maus auf ein ICON gehe, dann geht ein POPUP Fenster auf mit Beschreibung zum ICON.
    Wenn ich die Maus wegschiebe (onmouseout), dann schliesst sich das POPUP wieder.

    Funktioniert im IE und auch im NS4.7, und auch im Opera (akt. Version), aber nicht im Firefox.

    Die Antwort, die im Forum JSWELT für ein ähnliches Problem steht, ist wenig aussagekräftig. Script zu alt für Firefox.
    Genau das soll ich jetzt ändern als Hausaufgabe.

    Man sagte mir in einem anderen Forum, ich soll getelementbyid nehmen oder getelementsbyid.
    was ist der unterschied zwischen den beiden Funktionen?

    vielleicht haben Sie, liebe Forumuser, eine lösung für mich parat?


    hier die Funktion:
    ich klicke ein icon an, ein anderes wird angezeigt. und in info() wird der passende text angezeigt.
    ich glaube, dass Problem liegt in den nächsten Zeilen:
    *********************************************
    if (ie)
    document.all[layer].innerHTML = text;
    else
    if (ns)
    {
    document[layer].document.open();
    document[layer].document.write(text);
    document[layer].document.close();
    }
    *********************************************

    function iconbgchange(nr)
    {
    layer = "ort"+nr;
    if (merker[nr] == 0)
    {
    text = '<a href="javascript:iconbgchange('+nr+');" onMouseOver="javascript:info('+nr+');" onMouseOut="javascript:infoweg();"><img src="img/icons/'+orte[nr][7]+'" width="40" height="40" border="0" alt=""><\/a>';
    merker[nr] = 1;
    var bild = new Image();
    bild.src="mark.php?action=insert&id="+orte[nr][4];
    }
    else
    {
    text = '<a href="javascript:iconbgchange('+nr+');" onMouseOver="javascript:info('+nr+');" onMouseOut="javascript:infoweg();"><img src="img/icons/'+orte[nr][6]+'" width="40" height="40" border="0" alt=""></a>';
    merker[nr] = 0;
    var bild = new Image();
    bild.src="mark.php?action=delete&id="+orte[nr][4];
    }
    if (ie)
    document.all[layer].innerHTML = text;
    else
    if (ns)
    {
    document[layer].document.open();
    document[layer].document.write(text);
    document[layer].document.close();
    }
    }

    -------------------------------------------------------------------------

    im firefox werden noch nicht mal die ICON angezeigt.


    danke für Ihre Hilfe.
    habe leider nicht so viel (Taschen-)Geld, dass ich mir Bücher kaufen kann. und in unserer Dorfbibliothek stehen nur alte "Schinken" rum, glaube ich, aus dem Jahr 2000 und 2001. aber da gab es noch keinen Firefox und deswegen auch nicht mein Problem.

    Gruß
    Carolina

  2. #2
    Avatar von Comet
    Comet ist offline Administrator
    registriert
    17-09-2001
    Ort
    Austria | Westendorf
    Beiträge
    2.182

    AW: layer problem mit Firefox: Carolina braucht Hilfe

    Hi,

    Versuch das mal so:

    Code:
    if ( ie ) {
      document.all[layer].innerHTML = text;
    } else if ( ns ) {
      document[layer].document.open();
      document[layer].document.write(text);
      document[layer].document.close();
    } else {
      document.getElementById(layer).innerHTML = text;
    }
    ..:::Andi:::..

  3. #3
    carolina ist offline Jungspund
    registriert
    01-03-2005
    Beiträge
    16

    AW: layer problem mit Firefox: Carolina braucht Hilfe

    danke für die antwort.
    Leider werden die ICONs nicht angezeigt.
    Hier die ganzen Programmzeilen:
    info() und infoweg() ist noch nicht geändert. die show() funktioniert nicht.

    muss man beim firefox "show" oder "visible" nehmen?




    function show_cat(catarray,cat)
    {

    for (i=1; i<=4; i++)
    hide("ort" + i);
    if (cat==999)
    {
    for (i=1; i<catarray.length; i++)
    show("ort" + catarray[i][8]);
    }
    else
    {
    for (i=1; i<catarray.length; i++)
    if (catarray[i][1]==cat) show("ort" + catarray[i][8]);
    }
    }


    ************************************************************************
    function cat_change(catarray,cat) // wird an anderer Stelle aufgerufen.
    {
    var ns = (document.layers)? true:false;
    var ie = (document.all)? true:false;
    show_cat(catarray,cat);
    }
    *************************************************************************

    function iconbgchange(nr)
    {
    layer = "ort"+nr;
    if (merker[nr] == 0)
    {
    text = '<a href="javascript:iconbgchange('+nr+');" onMouseOver="javascript:info('+nr+');" onMouseOut="javascript:infoweg();"><img src="img/icons/'+orte[nr][7]+'" width="40" height="40" border="0" alt=""><\/a>';
    merker[nr] = 1;
    }
    else
    {
    text = '<a href="javascript:iconbgchange('+nr+');" onMouseOver="javascript:info('+nr+');" onMouseOut="javascript:infoweg();"><img src="img/icons/'+orte[nr][6]+'" width="40" height="40" border="0" alt=""></a>';
    merker[nr] = 0;
    }
    if ( ie )
    {
    document.all[layer].innerHTML = text;
    }
    else if ( ns )
    {
    document[layer].document.open();
    document[layer].document.write(text);
    document[layer].document.close();
    }
    else
    {
    document.getElementById(layer).innerHTML = text;
    }
    }


    ****************************************************

    function show(id)
    {
    if (ie)
    document.all[id].style.visibility = "visible";
    else
    if (ns)
    document.layers[id].visibility = "show";
    else
    document.getElementById(layer[id]).style.visibility = "show";
    }
    ******************************************************
    function hide(id)
    {
    if (ie)
    document.all[id].style.visibility = "hidden";
    else
    if (ns)
    document.layers[id].visibility = "hide";
    else
    document.getElementById(layer[id]).style.visibility = "hide";
    }

    **********************************************************
    function info(nr)
    {
    text = '<table width="190" border="0" cellpadding="2" cellspacing="0" bgcolor="#000000">'
    text = text+'<tr><td>'
    text = text+'<table width="100%" border="0" cellpadding="2" cellspacing="0">'
    text = text+'<tr><td>'
    text = text+'<span id="thetext1"><b><font face="arial, helvetica" size="-1" color="ffffff">'+orte[nr][0]+'-'+orte[nr][2]+ '</font></b></span>'
    text = text+'</td></tr>'
    text = text+'</table>'
    text = text+'<table width="100%" border="0" cellpadding="5" cellspacing="0" bgcolor="#ffffff">'
    text = text+'<tr><td>'
    // text = text+'<span id="thetext2"><font face="arial, helvetica" color="#000000" size="-2"><b><u>'+orte[nr][1]+'</u></b><br><b>'+orte[nr][2]+'</b><br>'+orte[nr][3]+'<br>'+orte[nr][4]+'<br>'+orte[nr][5]+'<br></font><span>'
    text = text+'<span id="thetext2"><font face="arial, helvetica" color="#000000" size="-2"><b><u>'+orte[nr][5]+'</u></b><br><b>'+orte[nr][3]+'</b><br></font><span>'
    text = text+'</td></tr>'
    text = text+'</table>'
    text = text+'</td></tr>'
    text = text+'</table>';

    if (ie)
    {
    document.all["popup"].innerHTML = text;
    document.all["popup"].style.visibility = "visible";
    }
    else
    if (ns)
    {
    document["popup"].document.open();
    document["popup"].document.write(text);
    document["popup"].document.close();
    document["popup"].visibility = "show";
    }
    }

    ****************************************************************

    function infoweg()
    {
    if (ie)
    document.all["popup"].style.visibility = "hidden";
    else
    if (ns)
    {
    document["popup"].visibility = "hide";
    }
    }

  4. #4
    carolina ist offline Jungspund
    registriert
    01-03-2005
    Beiträge
    16

    AW: layer problem mit Firefox: Carolina braucht Hilfe

    ich werde dem Lehrer sagen, dass die Aufgabe zu schwer ist. bis nächste Woche Dienstag soll ich das fertig haben. hab in einem Computerbuchladen nachgeschaut, aber in den neuen Büchern steht auch nichts drin womit ich weiterkomme.

  5. #5
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: layer problem mit Firefox: Carolina braucht Hilfe

    1.) du testest nur auf Browser der 4'er Generation
    2.) beschäftige dich mit dem Schlüsselwort 'var' und was lokale Variabeln sind.
    3.) schau dir noch mal den Tip von comet an

  6. #6
    carolina ist offline Jungspund
    registriert
    01-03-2005
    Beiträge
    16

    AW: layer problem mit Firefox: Carolina braucht Hilfe

    zu 3)
    stimmt, ich habe das was falsch geschrieben. danke für den hinweis. hab den fehler gefunden :-)
    ICONs werden jetzt angezeigt.

    zu 2)
    Var
    lokale variablen sind nur im bereich der funktion gültig. was meinen Sie genau damit.
    ich habe vor text und layer ein var gesetzt.

    zu 1)
    andere generationen:
    Sie meinen ich muss andere browser abfragen. nicht nur ie und ns wie im prgramm, sondern noch andere.
    ich schau mal bei google ob ich was finde.

    bin auf jeden Fall schon weiter als ich dachte.

    danke

  7. #7
    Avatar von dkdenz
    dkdenz ist offline Foren-Gott
    registriert
    13-04-2004
    Ort
    Lübeck
    Beiträge
    12.050

    AW: layer problem mit Firefox: Carolina braucht Hilfe

    Hallo carolina,
    wir haben hier die Angewohnheit, uns mit Du anzureden...
    Sie wirkt irgendwie steif...

  8. #8
    carolina ist offline Jungspund
    registriert
    01-03-2005
    Beiträge
    16

    AW: layer problem mit Firefox: Carolina braucht Hilfe

    okay !

    ich kenne nur if-then-else

    das hier soll ähnlich sein.

    var x = (ns) ? e.pageX : event.x+document.body.scrollLeft;

    also:
    die var x bekommt einen wert.
    das bedeutet dann also:

    if (ns)
    then e.pagex;
    else event.x+document.body.scrollLeft;

    hab ich recht?

    ich habe mal ein c-buch (c++) in der hand gehabt. da gibt es nur abkürzungen.

    danke an EUCH helfer.
    gruß
    carolina

  9. #9
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: layer problem mit Firefox: Carolina braucht Hilfe

    Nochmal zu den lokalen Variabeln

    Deine Funktion:

    function cat_change(catarray,cat) // wird an anderer Stelle aufgerufen.
    {
    var ns = (document.layers)? true:false;
    var ie = (document.all)? true:false;
    show_cat(catarray,cat);
    }

    deklariert ns und ie mit var, d.h. sie sind nur in der Funktion sichtbar und haben später keinen Wert mehr.


    Aber as ist nicht besonders geschickt was du prüfst. Du soltest das prüfen, was du verwendest. Also in dem Beispiel weiter oben:
    PHP-Code:
     if ( document.all )
    {
    document.all[layer].innerHTML text;
    }
    else if ( 
    document.layers )
    {
    document.layers[layer].document.open();
    document.layers[layer].document.write(text);
    document.layers[layer].document.close();
    }
    else if( 
    document.getElementById )
    {
    document.getElementById(layer).innerHTML text;

    und bei deinen neuem Beispiel, mit dem einfachen entweder oder Konstrukt (das hat auch einen Namen ich komm aber grad nicht drauf- http://de.selfhtml.org/javascript/sp...#entweder_oder)

    PHP-Code:
     var e.pageX event.document.body.scrollLeft

  10. #10
    carolina ist offline Jungspund
    registriert
    01-03-2005
    Beiträge
    16

    AW: layer problem mit Firefox: Carolina braucht Hilfe

    hallo,
    mein Lehrer hat sich gefreut, dass die PopUps angezeigt werden. Ich habe allerdings nicht hinbekommen, dass die Popups neben den ICONs angezeigt werden, sondern die werden immer links oben angezeigt. Im IE werden die richtig angezeigt.

    hier der code, der anscheinend probleme macht:

    ==========================================================

    function get_mouse(e)
    {
    var x = (e) ? e.pageX : event.x+document.body.scrollLeft;
    var y = (e) ? e.pageY : event.y+document.body.scrollTop;
    var xoffset = 20;
    var yoffset = 80;
    if (document.all)
    {
    if (x>0 && x<=300)
    {
    if (y>0 && y<=250)
    {
    document.all["popup"].style.left = x + xoffset;
    document.all["popup"].style.top = y - yoffset+100;
    }
    else
    {
    document.all["popup"].style.left = x + xoffset;
    document.all["popup"].style.top = y - yoffset;
    }
    }
    else
    {
    if (y>0 && y<=250)
    {
    document.all["popup"].style.left = x - xoffset - 180;
    document.all["popup"].style.top = y - yoffset+100;

    }
    else
    {
    document.all["popup"].style.left = x - xoffset - 180;
    document.all["popup"].style.top = y - yoffset;

    }
    }
    }
    else
    if (document.layers)
    {
    if (x>0 && x<=300)
    {
    if (y>0 && y<=250)
    {
    document["popup"].left = x + xoffset;
    document["popup"].top = y - yoffset+100;
    }
    else
    {
    document["popup"].left = x + xoffset;
    document["popup"].top = y - yoffset;
    }
    }
    else
    {
    if (y>0 && y<=250)
    {
    document["popup"].left = x - xoffset - 180;
    document["popup"].top = y - yoffset+100;

    }
    else
    {
    document["popup"].left = x - xoffset - 180;
    document["popup"].top = y - yoffset;
    }
    }
    }
    else
    if (document.getElementById)
    {
    if (x>0 && x<=300)
    {
    if (y>0 && y<=250)
    {
    document.getElementById["popup"].style.left = x + xoffset;
    document.getElementById["popup"].style.top = y - yoffset+100;
    }
    else
    {
    document.getElementById["popup"].style.left = x + xoffset;
    document.getElementById["popup"].style.top = y - yoffset;
    }
    }
    else
    {
    if (y>0 && y<=250)
    {
    document.getElementById["popup"].style.left = x - xoffset - 180;
    document.getElementById["popup"].style.top = y - yoffset+100;

    }
    else
    {
    document.getElementById["popup"].style.left = x - xoffset - 180;
    document.getElementById["popup"].style.top = y - yoffset;

    }
    }
    }
    }
    ==========================================================

    function PosTest(element)
    {
    ns = (document.layers)? true:false;
    ie = (document.all)? true:false;

    if (ie)
    {
    BildPos = {x: 0, y: 0};
    while (element)
    {
    BildPos.x += element.offsetLeft;
    BildPos.y += element.offsetTop;
    element = element.offsetParent;
    }
    }
    else
    if (ns)
    BildPos = {x: element.x, y:element.y};
    }
    ==============================================

    ........

    <script language="JavaScript">
    document.writeln('<style type="text\/css">');
    <?PHP
    for ($j=1; $j<=$tmpi; $j++)
    {
    echo " PosTest(document.images.map$j);";
    echo "for (i=1; i<PAK[$j].length; i++)";
    echo "document.writeln('#ort'+PAK[$j][i]+'{ position:absolute; left:'+eval(BildPos.x+leftpos[PAK[$j][i]])+'px; top:'+eval(BildPos.y+toppos[PAK[$j][i]])+'px; width:10px; height:10px; visibility:visible; z-index:1; }');";
    }
    ?>
    document.writeln('<\/style>');
    </script>


    <?PHP
    //* Alle Punkte auf das Bild malen
    echo "<script language=\"JavaScript\">";
    for ($i=0; $i<$num; $i++)
    {
    echo "document.writeln('<div id=\"ort'+($i+1)+'\">";
    echo "<img src=\"$iconarray[$i]\" width=\"40\" height=\"40\" border=\"0\" alt=\"\"><\/div>');";
    }
    echo "</script>";
    ?>
    ....
    =====================================================


    Im IE funktioniert es aber im firefox nicht.


    was mir aich auffällt. wenn man ein bild anzeigt und bei alt="...." einen text angibt, wird der angezeigt , wenn man mit dem mauszeiger über dem bild bleibt. wie so ein kleines popup.
    im firefox geht das nicht.
    warum?

    danke für jede hilfe.
    grüße
    eure
    carolina

  11. #11
    BlackHawk ist offline Eroberer
    registriert
    07-02-2005
    Beiträge
    70

    AW: layer problem mit Firefox: Carolina braucht Hilfe

    Das alt-Attribut ist eigentlich nicht dafür gedacht, als "Tooltip" oder der Gleichen zu fungieren,
    das hat Microsoft beim IE nur so implementiert (und evt. auch andere so übernommen).

    Der eigentliche Sinn des alt-Attributes ist das Anzeigen des hinterlegten (alternativ)Textes,
    sofern die angeforderte BildURL (bei <img>) nicht aufgerufen werden kann (Fehler irrelevant).

    Des Weiteren ist dieses Attribut für Textbrowser gedacht, die keine Möglichkeit haben das eigentliche
    Medium darzustellen.

    Der Firefox geht mit dem Nichtanzeigen des alt-Attributes als "Tooltip" den richtigen Weg.
    MfG BlackHawk

    Der Sinn des Lebens ist 42, die Frage danach kennt jeder.

    Enjoy Visions
    www.WhiteStarProgramming.de (currently under construction)

  12. #12
    Microkotz ist offline Foren-Gott
    registriert
    01-12-2002
    Ort
    Germany --> Baden-Württemberg
    Beiträge
    2.240

    AW: layer problem mit Firefox: Carolina braucht Hilfe

    wenn du so ein "tooltip" haben willst, wie der IE das alt-attribut umsetzt, verwende title="Blub"
    [size=1]Ehe == errare humanum est == irren ist Menschlich
    # define god root

  13. #13
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: layer problem mit Firefox: Carolina braucht Hilfe

    Du musst noch eine Einheit angeben und die Funktion aufrufen.

    So ist es komplett falsch (wird dir auch in der JS Konsole angezeigt)
    document.getElementById["popup"].style.left = x + xoffset;
    document.getElementById["popup"].style.top = y - yoffset+100;

    getElement.. ist eine Funktion und kein Objekt.

    document.getElementById("popup").style.left = x + xoffset;
    document.getElementById("popup").style.top = y - yoffset+100;

    Und woher soll der Browser Wissen was du mit left meinst?
    left Mäuse? left Äpfel? left Birnen?
    Nur der IE kümmert sich nicht drum und wagt die Vermutung du meinst 'px' alle anderen Browser setzen den Wert auf null

  14. #14
    carolina ist offline Jungspund
    registriert
    01-03-2005
    Beiträge
    16

    AW: layer problem mit Firefox: Carolina braucht Hilfe

    hallo microkotz,

    title verwenden? wo? im img-tag? <img="..." title="..." alt="---" ....>

  15. #15
    carolina ist offline Jungspund
    registriert
    01-03-2005
    Beiträge
    16

    AW: layer problem mit Firefox: Carolina braucht Hilfe

    Hallo Schlauer,

    oh danke. man (frau) schaut auf klammern und sieht nur noch eckig statt rund. ich sollte mal früher schlafen gehen.

    gibt es eigentlich ein buch, in dem auf solche browser-unterschiede hingewiesen wird.
    ich stelle mir ein buch vor, in dem beispiele stehen und der autor entsprechend beschrieben hat:
    ...so geht es im firefox,
    ...das müsst ihr im netscape machen, das im opera usw.

    einfach mal eine schöne übersicht.

    im internet suchen ist schon anstrengend auf die dauer.

    okay, ich mache gleich mal die runden klammern rein.
    und werde als einheuit die px angeben, also var x= 80px. usw.

    erstmal danke

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Problem - Open New Window - in Firefox
    Von therog im Forum JavaScript
    Antworten: 18
    Letzter Beitrag: 23-10-2006, 23:19
  2. IFRAME im Layer reagiert auf nix (Firefox)
    Von dantist im Forum Allgemeines
    Antworten: 1
    Letzter Beitrag: 11-02-2005, 17:41
  3. Problem mit location.replace() im Firefox
    Von BlackHawk im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 08-02-2005, 14:21
  4. layer - firefox problem
    Von thegonz im Forum JavaScript
    Antworten: 1
    Letzter Beitrag: 11-01-2005, 14:52
  5. Problem mit Positionierung externe Layer innerhalb eines Layers
    Von Krawallfisch im Forum CSS und (X)HTML
    Antworten: 3
    Letzter Beitrag: 07-10-2004, 16:21

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •