Autor | Zpráva | ||
---|---|---|---|
marcus33cz Profil |
#1 · Zasláno: 14. 9. 2011, 13:55:35
Ahojte,
mám takovou jednoduchou funkci na přepínání obsahu podle toho, co uživatel vybere: function showHideByOperator(elementID){ if( elementID.value=="vodafone" || elementID.value=="tmobile" ){ document.getElementById('hideable').style.display = 'table-row-group'; document.getElementById('smsLeftSubwrapper').style.display = 'none'; document.getElementById('paymentTopForm').style.display = 'none'; } else if( elementID.value=="o2" ){ document.getElementById('hideable').style.display = 'none'; document.getElementById('smsLeftSubwrapper').style.display = 'block'; document.getElementById('paymentTopForm').style.display = 'block'; } } Problém je na řádku s table-row-group, protože IE<=7 a nižší to nepodporuje. Pro tyto verze IE bych tam rád místo table-row-group dal block nějakou podmínkou. To se mi bohužel nedaří. Neporadil by někdo, jak by se tam dala vložit nějaká chytrá podmínka? Díky moc P.S.: Dát pryč tabulku, nastylovat DIVy a pro všechny prohlížeče dát display: block mě taky napadlo, ale až jako poslední možnost. :-) |
||
Chamurappi Profil |
#2 · Zasláno: 14. 9. 2011, 14:07:47
Reaguji na marcuse33cz:
1) Proč chceš podmínkovat konkrétní prohlížeč? Proč neodchytíš příčinu problému a neošetříš přímo ji? „Problém je na řádku s table-row-group“ — vyhodí výjimku, tu můžeš chytit. 2) Je opravdu nutné nastavovat konkrétní display ? Ve stylopisu máš pro dotyčné <tbody> nastaveno display: none ? Jestli ne, zrušit display v atributu style jde nastavením element.style.display = '' .
3) Používej třídy (ideálně jednu na společném rodičovi) a nekompatibility řeš na úrovni CSS. |
||
marcus33cz Profil |
#3 · Zasláno: 14. 9. 2011, 14:30:28
1) Není to nutné, klidně uvítám řešení pro všechny prohlížeče, které nepodporují table-row-group. Z 99 % to u mých uživatelů je Internet Explorer <=7. Proč neodchytím příčinu? Nevím jak, tohle je kód slepený dohromady, JavaScript neumím.
2) tbody má display: none. Když dám element.style.display='' tak mi ten prvek nezmizí. Nevím, co by v tom případě bylo cílem. 3) Třídy klidně používat budu, to není můj problém. Nebráním se řešení přes CSS, pokud bude nějaké možné jednodušší. Když uživatel vybere volbu A a používá prohlížeč nepodporující table-row-group, zobrazit element A jako block. Když uživatel vybere volbu A volbu a používá prohlížeč podporující table-row-group zobrazit element A jako table-row-group. Když uživatel vybere volbu B, element A schovat a zobrazit element B jako block. |
||
_es Profil |
#4 · Zasláno: 14. 9. 2011, 14:35:49
marcus33cz:
„Proč neodchytím příčinu? Nevím jak, tohle je kód slepený dohromady, JavaScript neumím.“ Použi príkazy try...catch. |
||
Chamurappi Profil |
#5 · Zasláno: 14. 9. 2011, 14:53:43
Reaguji na marcus33cza:
„tbody má display: none.“ Ve stylopisu? „Když dám element.style.display='' tak mi ten prvek nezmizí.“ To ho zviditelní, pokud nemá display: none nastavený jinde než v atributu style .
„Nebráním se řešení přes CSS, pokud bude nějaké možné jednodušší.“ Uživatel vybere volbu A, nastavíš document.getElementById("společný-rodič").className = "stav-A" .
Uživatel vybere volbu B, nastavíš document.getElementById("společný-rodič").className = "stav-B" .
Zbytek nechť udělá CSS. Řešit podporu CSS v JavaScriptu není vůbec nutné. |
||
Časová prodleva: 13 let
|
0