Autor Zpráva
Analytik
Profil *
Zdravím.
Mám definovaný <div id="abc" .....
napíšu do něj několik řádku.
Jde pak Javascriptem nějak zjistit počet řádků textu v DIV ?

Dík.
Marschmallow
Profil
Analytik:
Vyzkoušej tenhle kód, ale jednotlivé řádky odděluj pomocí nepárové značky <br>:
function divlines(div){
  var brs = div.getElementsByTagName("br");
  return brs.length;
}
function textarealines(text) {
  return text.split("\n").length;
}
Analytik
Profil *
Díky, ale právě, že v tom divu neodpovídá počet <br> počtu řádků. Někdy je do toho divu vložen celý text bez zalamování pomocí <br>, tak že počet řádků v divu určuje délka textu a šíře divu,.
Dneska jsem nad tím strávil půl dne a nic jsem nenašel.
Marschmallow
Profil
Analytik:
Musíš nějak dát JS najevo, že tady končí a tady začíná řádek. Jinak se prostě nehneš. Když jen tak do HTML vložíš pět mezer, projeví se to jako jedna, nebé žádná mezera. Tak se to i se zalamováním.
Joker
Profil
Analytik:
Možná by šlo zjistit výšku prvku, zjistit/odhadnout výšku jednoho řádku a vydělit.
Analytik
Profil *
S těmi mezerami, to je jasné, že se zobrazí jedna. Mám spíš na mysli, např. slovo abcdef a mezera a tohle zkopírovat do toho divu za sebou dvacetkrát. Pak automaticky přechází text na novou stránku. Netušil jsem, že Javascript pro práci s objektem/elementem nemá nic za metody jak zjistit počet řádků.
Zkoušel jsem´výšku, ale vždycky mi to hodí výšku celého divu. Můj původní záměr byl takový, že když div bude obsahovat jeden řádek, tak text v něm po načtení stránky zarovnám na střed. Když bude obsahovat víc řádků, Zarovnám jej do bloku.
Nezjistil jsem ani výšku čistého textu, ani počet řádků, ale ani šířku textu v pixelech, což v PHP jde.
Tak že asi nic.
mimochodec
Profil
http://stackoverflow.com/questions/783899/how-can-i-count-text-lines-inside-an-dom-element-can-i
Analytik
Profil *
Díky, nicméně vůbec nechápu co to má dělat.
Joker
Profil
Analytik:
Netušil jsem, že Javascript pro práci s objektem/elementem nemá nic za metody jak zjistit počet řádků.
Protože obecná metoda na zjištění počtu řádků textu asi ani nejde napsat (resp. je hodně nejasné, co vlastně je „počet řádků“) a navíc ta informace většinou moc k ničemu není, protože se z ní nedá nic moc vyvodit.
Například když v prvku budou dva jiné prvky plovoucí vedle sebe, jeden bude mít 3 řádky textu a druhý 20 řádků a pod nimi bude „clear“ prvek s jedním řádkem, kolik má ten prvek řádků?

ani šířku textu v pixelech, což v PHP jde
To těžko.
PHP nemůže vědět šířku textu v pixelech, protože netuší, jakým fontem a jakou velikostí nakonec prohlížeč text zobrazí.

Díky, nicméně vůbec nechápu co to má dělat.
Tak jestli dobře koukám, na tom StackOverflow poradili víceméně to co já- zjistit výšku obsahu prvku a dělit výškou řádku.
Analytik
Profil *
úplně by mě stačila ke spokojenosti výška řádku textu takto ...
Budu mít jeden řádek výška bude 20px
budu ´mít dva řádky bud v´výška 40 px.. To by byla paráda. Jde mi prostě jenom i informaci, jestli je tam jeden řádek nebo dva.
šířka divu například 200 px
výška 200 px.
Joker
Profil
Analytik:
Tak stačí pro ten text udělat další prvek s rozměry závislými na obsahu.
Analytik
Profil *
Tak že jako třeba nový div se stejnou šířkou do kterého nechám vypsat text a pak potom výška divu jasně řekne jak to je s počtem řádků.
Můžu ten div pro výpočet výšky definovat nějak jako hidden ? Něco jako obdoba skrytých input polí.
Joker
Profil
Analytik:
Můžu ten div pro výpočet výšky definovat nějak jako hidden
Ano, ale proč? Ten obsah má být viditelný, ne?
Analytik
Profil *
To ano. Ale ten div ve kterým je text je pevně daný, viz výše, např. 200 px x 200px. Ten na tý stránce zůstane. Akorát se vycentruje podle počtu řádků buď na střed nebo do bloku.
Joker
Profil
Ano, a do něj se dá ještě jeden, který bude mít výšku a šířku auto a margin/padding/border 0 a je to.
Analytik
Profil *
To je paráda a nemusím dopočítávat tu šířku toho skrytého divu, což je dobrý, kdyby v budoucnu někdo upravil těch 200 px na jinou hodnotu.
Super elegantní. děkan.

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: