Autor | Zpráva | ||
---|---|---|---|
Analytik Profil * |
#1 · Zasláno: 29. 8. 2014, 14:13:44
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 |
#2 · Zasláno: 29. 8. 2014, 14:18:05
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 * |
#3 · Zasláno: 29. 8. 2014, 14:24:42
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 |
#4 · Zasláno: 29. 8. 2014, 14:29:47
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 |
#5 · Zasláno: 29. 8. 2014, 14:52:11
Analytik:
Možná by šlo zjistit výšku prvku, zjistit/odhadnout výšku jednoho řádku a vydělit. |
||
Analytik Profil * |
#6 · Zasláno: 29. 8. 2014, 14:55:34
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 |
#7 · Zasláno: 29. 8. 2014, 15:09:56
|
||
Analytik Profil * |
#8 · Zasláno: 29. 8. 2014, 15:33:10
Díky, nicméně vůbec nechápu co to má dělat.
|
||
Joker Profil |
#9 · Zasláno: 29. 8. 2014, 15:37:41
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 * |
#10 · Zasláno: 29. 8. 2014, 15:47:02
ú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 |
#11 · Zasláno: 29. 8. 2014, 15:50:30
Analytik:
Tak stačí pro ten text udělat další prvek s rozměry závislými na obsahu. |
||
Analytik Profil * |
#12 · Zasláno: 29. 8. 2014, 16:04:11
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 |
#13 · Zasláno: 29. 8. 2014, 16:22:58
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 * |
#14 · Zasláno: 29. 8. 2014, 16:29:29
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 |
#15 · Zasláno: 29. 8. 2014, 16:35:08
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 * |
#16 · Zasláno: 29. 8. 2014, 16:47:58
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. |
||
Časová prodleva: 11 let
|
0