ugrás a tartalomhoz

Javascript gondok Opera alatt

Anonymous · 2006. Jún. 6. (K), 10.52
Sziasztok,

egy készülő oldal szolgáltatásait javítgatva éppen most mélyedek el a javascriptben és belefutottam néhány bosszantó dologba.

ezen az oldalon a baloldali linklistára készítettem egy sublink elrejtő-megmutató scriptet, amiben ha a '+' vagy '-' jelre kattintasz megjelennek vagy eltűnnek a linklistához tartozó sublinkek. A gond annyi, hogy IE alatt tökéletes, FF alatt már nem jelenik meg az ikonokhoz tartozó 'alt' szöveg és Operában csak egyszer becsukja linklistát utána semmi. És itt sem jelenik meg az 'alt' szöveg.
A '+' '-' ikonokat csak akkor rakja ki a script ha van sublink.

a kód:

function addLinkImages()
{
  var elems = ElementsByClassName('li_sublink'); 
    
  if(elems.length)  
  { 
    src = (sublink_statusz == 'minusz')? 'plusz_feher.gif' : 'minusz_feher.gif';
    sublink_statusz = (sublink_statusz == 'minusz')? 'plusz' : 'minusz';
    var alt_text = (sublink_statusz == 'plusz')? megmutat[nyelv] : elrejt[nyelv]; 

    parent = document.getElementById('links_felso');
    if(child = document.getElementById('sublink_statusz'))
    {
       parent.removeChild(child);
    }                
    var icon = document.createElement('img');
    icon.setAttribute('src' , '../images/' + src);
    icon.setAttribute('width' , '10');
    icon.setAttribute('height' , '15');
    icon.setAttribute('alt' , alt_text);
    icon.style.verticalAlign = 'bottom';
    icon.style.cursor = 'pointer';
    icon.style.marginTop = '4px';
    icon.style.marginRight = '10px';    
    icon.id = 'sublink_statusz'; 
    icon.onclick = function hide_sublinks()
       { 
          var display_arg = (sublink_statusz == 'minusz')? 'none' : 'block';
          var alt_text = (sublink_statusz == 'plusz')? megmutat[nyelv] : elrejt[nyelv]; 
          
          var elems = ElementsByClassName('li_sublink');         
          for(i=0; i<elems.length; i++)
          {
             azon = elems[i].id;
             document.getElementById(azon).style.display = display_arg;             
          } 
          addLinkImages();         
       };                    
    parent.appendChild(icon);  
  }            
}
Ha valakinek van valami ötlete, nagyon megköszönném,

Laci
 
1

alt szöveg

Bártházi András · 2006. Jún. 6. (K), 11.11
Az alt tulajdonság feladata, hogy ha nem töltődik le a kép, a böngésző akkor, és csakis akkor megjelenítse, a kép helyett. A title tulajdonság feladata, hogy tooltipként, vagy egyéb módon megjelenjen a böngészőt használó számára, ha az adott kép felé viszi az egérkurzort. Az Internet Explorer el van tévedve, azért jeleníti meg az alt tulajdonság értékét tooltipként. Állítsd be a title tulajdonságnak is ugyanazt az értéket, és voálá.

A sublink_statusz változóval nem látom át, hogy mit bűvészkedsz, mi neki a scope-ja? Az egy helyi, vagy egy globális változó? Ha globális, akkor a globális névtérben nem ártana deklarálni.
2

mindig tanul az ember...

Anonymous · 2006. Jún. 6. (K), 11.54
szia András, köszönöm a gyors választ. A tooltip már rendben, erre nem is gondoltam.

A sublink_statusz globális, az alapértéke minusz , mivel alapból az összes sublink ki van írva, tehát aki akarja a '-' jelre kattintva elrejtheti őket.
Arra szolgál, hogy mindig a megfelelő ikont rakja ki, sublinkek elrejtve állapot esetén a '+', sublinkek megmutatva állapot esetén a '-'.

IE, FF rendben, de Opera alatt valami miatt nem muzsikál.

Egyébként a Te diszkrét javascript cikkedből indultam ki, és próbálok minden javascriptet 'diszkretizálni' az oldalon.
A cikk nagyon jó és érthető, gratulálok hozzá.

Laci
3

Nem jó az alap ötlet

Jano · 2006. Jún. 6. (K), 12.25
Elnézést, hogy nem a kódról beszélek, de már maga az alapötlet nem igazán jó usability vagyis felhasználó barátság szempontból. Ha van egy lista amiben vannak alelemek akkor ezt semmiképpen sem így szoktuk jelölni. A doboz sarkában elhelyezett plusz/minusz magát a dobozt szokta általában becsukni, kinyitni! Az allisták előhozására az adott menüpont elött szoktak plusz/minusz jelet elhelyezni. Nézd meg a Windowsodban!

Gondolj arra, hogy a felhasználónak mielőtt rákattint bármilyam interface elemre lesz egy előzetes elvárása, hogy mi fog történni. Pl ha felkapcsolod a falon lévő kapcsolót akkor a villany fog felkapcsolódni és nem a TV.

Másrészt ha csak azt a 3-4 almenüpontot kell elrejteni akkor teljesen felesleges ez a ki-becsukósdi.

Másik: a menüben most csak a képek szolgálnak linkként a szövegek nem. Tuti, hogy mindenki először a linkre fog próbálni kattintani, mert az a megszokott. Én nagyon ajánlom, hogy legyen az is link.

A kibontós menü alatti kis képekre én vártam volna, hogy meglehet nézni nagyobbakban őket.

A lézeres és szépség szalon rész menüjének színválasztása nem szerencsés, mert (legalábbis én TFT-men) alig olvasható, kicsi a kontraszt háttér és fehér betű között.
4

köszi a kritikát

Anonymous · 2006. Jún. 6. (K), 12.56
A menü alatti képeket és a címsorban lévő szövegeket nem akartam úgy hagyni, azokat még be fogom linkelni.

A ki-becsukás azért került a linkdoboz jobb sarkába, mert oda hiányzott valami kis apróság. Egyébként csak a fogászat oldal 'rendelő' linkjének lesznek sublinkjei, kb 8-10 db, ami kicsit megnyújtotta volna a linkdobozt, ezért gondoltam erre a csukogatós módszerre.

A színeken majd még gondolkodom, nem akarom nagyon tarkára csinálni, ámbár a fehér tényleg kicsit elmosódott.

Laci