Autor Zpráva
Wladimir Čert
Profil *
Zdravím,
jde řešit skrze JS aby byl text v první buňce v každém řádku zarovnán v pravo? Řešení skrze CSS umím, nicméně RS, který používám má těchto tabulek mnoho a nechci zasahovat do kódu.
Díky
margin
Profil *
Pokud znáš CSS řešení, tak ho použij, nechápu, proč by to měl být problém. Pokud chceš nastylovat použít jen na některé tabulky, tak jim dej třídu.
V každém případě, přehlednější a efektivnější řešení je použít CSS.
Wladimir Čert
Profil *
Problém to je z toho důvodu, že systém používá mnoho tabulek, to zaprvý a za druhý, při aktualizaci RS musím dávat třídy do tabulek znova...
margin
Profil *
Wladimir Čert:
musím dávat třídy do tabulek
Pokud chceš ostylovat první sloupec všech tabulek, tak žádné třídy do tabulek nepotřebuješ.
Pokud chceš ostylovat první sloupec pouze některých tabulek, tak stačí dát takovým tabulkám třídu. Možná by šlo tabulky zaměřit jiným kontextem, to nevím, protože jsem kód lezoucí ze zmíněného RS neviděl.
Wladimir Čert
Profil *
Uvedu příklad.
<table>
<tr><td>horní levá buňka</td><td>horní pravá</td></tr>
<tr><td>dolní levá</td><td>dolní pravá</td></tr>
</table>

a potřebuji aby horní levá a dolní levá byla zarovnaná v pravo... můžu dát třídu buňkám align="right" ale bohužel ke spoustě tabulek a problémy s updaty to moc smysl nemá.
Someone
Profil
Pokud to chceš opravdu řešit v JavaScriptu tak:
HTML
<table id="myTable">
    <tr><td>horní levá buňka</td><td>horní pravá</td></tr>
    <tr><td>dolní levá</td><td>dolní pravá</td></tr>
</table>
JS
var t   = document.getElementById("myTable");
var trs = t.getElementsByTagName("tr");

for(var a=0;a<trs.length;a++) {
    trs[a].childNodes[0].style.textAlign = "right";
}
Wladimir Čert
Profil *
Díky, ale má to chybu. Tabulky nemají žádný identifikátor ani třídu... :(
Someone
Profil
Wladimir Čert:
Jestli to má být naprosto pro všechny tabulky tak takhle...
var tables   = document.getElementsByTagName("table");
for(var b=0;b<tables.length;b++) {
    var t   = tables[b];
    var trs = t.getElementsByTagName("tr"); 
    for(var a=0;a<trs.length;a++) {
        trs[a].childNodes[0].style.textAlign = "right";
    }
}
Chamurappi
Profil
Reaguji na Someone:
trs[a].childNodes[0]
První uzel v řádku nemusí být <td>, může to být i textový uzel s mezerami a ten nemá vlastnost style (=> vznikla by výjimka).
Nebylo by lepší použít normální HTML DOM? Řádky zjistit z kolekce rows, buňky z řádků z kolekce cells?


Reaguji na Wladimira Čerta:
Problém to je z toho důvodu, že systém používá mnoho tabulek
A to je problém, protože nechceš stylovat všechny? Zatím jsi ani nenaznačil, podle čeho se pozná ta tabulka (nebo ty tabulky), které chceš zarovnání změnit. Není tedy jasné, proč to nejde vyřešit v CSS a proč by to v JS jít mělo.
Wladimir Čert
Profil *
Chamurappi:
Ano všechny (resp. v divu #content). V CSS to nejde z toho důvodu, že nemám jak přidat třídu či identifikátor tabulky. Kdybych mohl zasáhnout do kódu, co generuje RS tak to udělám, nicméně při častém updatu je to na bednu...
margin
Profil *
CSS řešení (nefunguje v IE6 a starších, ale tyto prohlížeče už téměř vymizely):
#content td:first-child {text-align: right;}
Wladimir Čert
Profil *
margin:
Díky. O té třídě jsem nevěděl.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: