Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js] Dlaczego nie działa \n
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Terrqge
Dopiero zaczynam uczyć się js'a i już napotkałem problem z przejściem do następnej linii. Może to i banalne, ale...

Mam plik html'a w standardzie XHTML 1.0 Strict.
A w nim:
  1. <script type="text/javascript" src="js/skrypt2.js" charset="utf-8"></script>


Natomiast skrypt2.js wygląda tak...
Kod
document.write("Pierwsza linia\n");
document.write("Druga linia\n");

...i wszystko wyświetla się w jednej linii... Czemu przejście do następnej linii w ten sposób nie działa?

Ewentualnie napisałem coś takiego

Kod
document.write("Pierwsza linia"+" <br>");
document.write("Druga linia"+" <br>);

...i wtedy działa. Ale czy to do końca jest poprawne? Zresztą, szybciej i prościej użyć \n. Co robie źle?
wookieb
Poprawne. W htmlu nowa linia to <br/> a nie \n
Terrqge
W takim razie dlaczego w różnych kursach itp, używają \n i im wszystko działa?
nospor
Cytat
kim razie dlaczego w różnych kursach itp, używają \n i im wszystko działa?
Bo:
ALbo nie działa a tobie się wydaje że działa,
Albo tobie się wydaje ze działa, podczas gdy nie działa
wink.gif
Terrqge
Aha...

W takim razie na tej stronie w tabelce 2.1 Typy danych "\n" umieszczono ze świadomością, że nikomu nie zadziała i to tylko taki kit? thumbsupsmileyanim.gif
nospor
Yyy, to że ktoś napisał
\n - nowy wiersz
to ty założyłeś że działa?? No bez jaj. Jak możesz pisać ze cos gdzieś działa, podczas gdy nie masz tego potwierdzenia??


A poza tym, \n to jest nowy wiersz, ale nie dla HTML. HTML jako nowy wiersz interpretuje jedynie BR. Jakbyś jednak podejrzał źródło strony to byś zobaczył że \n to nowy wiersz.
Nie kłóć się więc w rzeczach których nie rozumiesz, a już tym bardziej nie pisz, że coś działa, podczas gdy nie sprawdzasz na własne oczy że działa.
Terrqge
Dziękuję za odpowiedź... wink.gif
Ależ ja nawet nie próbuję się kłócić.

W takim razie chyba już ostatnie pytanie. Skoro nie przy HTML to kiedy używamy tegoż że \n?
nospor
W edytorze tekstu wink.gif
Nowa linia w edytorze tekstu to jest właśnie \n tylko ty tego nie widzisz bo to znak specjalny. Ty go widzisz jako nowa linia smile.gif

Inny przykład:

generujesz plik tekstowy z kilkoma liniami:
  1. $zm = "pierwsza linia\ndrugal linia\ntrzecia linia";

I taką treść tej zmiennej zapisujesz do pliku. Otworzysz plik edytorem i zobaczysz tam 3 linie. Proste.
Terrqge
Wybacz, ale nie zrozumiałem tego ostatniego przykładu.

O co chodzi z tym generowaniem pliku? I o jaki edytor tekstu Ci chodzi, o ten w którym piszę sobie skrypt?

Napisałem skrypt tak:

Kod
var n =  "pierwsza linia\ndrugal linia\ntrzecia linia";

document.write(n);


Mimo to, wyświetla się dalej w jednej linii...
Terrqge
No ok i co dalej. biggrin.gif
Mam dać white-space:nowrap do cssa jako <p>, a potem tekst wsadzić w js w znaczniki <p>... Pewnie nie, w ogóle do czego do miałoby służyć?

Może już was trochę zamęczam, ale chodzi mi tylko o konkretny przykład kiedy i jak używa się tego tajemniczego "\n". Nic więcej mi nie potrzeba...
wookieb
Użyj http://jsfiddle.net i pokaż co masz.
Terrqge
A cóż miałbym mieć? Mam cały czas to samo....

html
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  4. <meta name="generator" content="Bluefish 2.0.1" />
  5. <meta name="author" content="Sk" />
  6. <meta name="date" content="2011-10-15T23:14:00+0200" />
  7. <meta name="copyright" content=""/>
  8. <meta name="keywords" content=""/>
  9. <meta name="description" content=""/>
  10. <meta name="ROBOTS" content="NOINDEX, NOFOLLOW"/>
  11. <meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
  12. <meta http-equiv="content-style-type" content="text/css"/>
  13. <meta http-equiv="expires" content="0"/>
  14.  
  15. <link rel="Stylesheet" type="text/css" href="style.css" />
  16. </head>
  17. <div id="container">
  18.  
  19. <script type="text/javascript" src="js/skrypt2.js" charset="utf-8"></script>
  20.  
  21. </div>
  22.  
  23. </body>
  24. </html>


skrypt3.js
  1. var n = "pierwsza linia\ndrugal linia\ntrzecia linia";
  2.  
  3. document.write(n);


strona ktora sie wyswietla
  1. pierwsza linia drugal linia trzecia linia


Bo tego twojego white-space nie wiem za bardzo jak użyć i w ogóle po co? Chodzi mi tylko o to tajemnicze \n... Doczekam sie kiedykolwiek bezpośredniej odpowiedzi...
wookieb
  1. <div id="container" style="white-space: pre">
Terrqge
Ok, ale to działa w obrębie Html'a, a nie mojego skryptu. wink.gif

Zresztą, nie ma sensu dalej ciągnąć wątku bo i tak nikt nie jest w stanie udzielić mi odpowiedzi na moje pytanie, czyli kiedy i jak stosujemy ogólnie zapis "\n"... O przechodzeniach do nowej linii innymi sposobami to ja już wiem.
wookieb
Przecież dostałeś JASNĄ odpowiedź, że w htmlu to tak po prostu NIE DZIAŁA. On nie wyświetla białych znaków. Możesz go do tego zmusić właśnie przez CSS. Czego tutaj nie rozumiesz?
Terrqge
Chodzi mi o to, że skoro nie działa w HTMLu to gdzie działa?
Bo juz wiem ze do htmla będę używać w js + "<br>".
Kostek.88
Cytat(nospor @ 25.11.2011, 23:22:13 ) *
W edytorze tekstu wink.gif
Nowa linia w edytorze tekstu to jest właśnie \n tylko ty tego nie widzisz bo to znak specjalny. Ty go widzisz jako nowa linia smile.gif

Inny przykład:

generujesz plik tekstowy z kilkoma liniami:
  1. $zm = "pierwsza linia\ndrugal linia\ntrzecia linia";

I taką treść tej zmiennej zapisujesz do pliku. Otworzysz plik edytorem i zobaczysz tam 3 linie. Proste.


O czym Ty mowisz? Jakim edytorze tekstu? Zwykly WYSIWYG na stronie? Chodzi po prostu zwykle zapisanie informacji w bazie, a potem skorzystanie z funkcji nl2br przy wyswietlaniu w textarea?

Kolega tu wspomnial, ze nie rozumie tego przykladu. Ja moge dodac tylko, ze "\n" mozna uzyc w PHP w niektorych przypadkach, bo o to mu chyba chodzilo.
nospor
Cytat
i tak nikt nie jest w stanie udzielić mi odpowiedzi na moje pytanie, czyli kiedy i jak stosujemy ogólnie zapis "\n"
Przecież podałem ci przykłady kiedy się używa \n. A to że nie zrozumiałeś to już nie moja wina. Ba, mało tego, nawet Kaloryfer nie zrozumiał, patrząc na jego post wyżej.... wink.gif
kamil4u
W takim razie ja postaram się wytłumaczyć smile.gif
Gdy w HTML napiszesz:
Kod
<html>
<body>
  Pierwszy wiersz
  Drugi wiersz
  Trzeci wiersz
</body>
</html>
To wynikiem będzie: Pierwszy wiersz Drugi wiersz Trzeci wiersz. W rzeczywistości nie ma czegoś takiego jak entery, a znaki specjalne np. \n(nowy wiersz) czy \t(tabulator). Idąc tym tokiem rozumowania nasz kod tak naprawdę wygląda tak:
Kod
<html>\n <body>\n  Pierwszy wiersz\n  Drugi wiersz\n  Trzeci wiersz\n </body>\n</html>


Aby w HTML uzyskać nowy wiersz używamy <br>. Czyli nasz kod powinien wyglądać tak:
Kod
<html>
<body>
  Pierwszy wiersz<br>
  Drugi wiersz<br>
  Trzeci wiersz
</body>
</html>
, czyli w rzeczywistości:
Kod
<html>\n <body>\n  Pierwszy wiersz<br>\n  Drugi wiersz<br>\n  Trzeci wiersz\n </body>\n</html>


Teraz JS. Zapis:
Cytat
var n = "pierwsza linia\ndrugal linia\ntrzecia linia";
document.write(n);

Działa tak jakbyś ręcznie napisał:
Cytat
pierwsza linia
drugal linia
trzecia linia
, a że HTML czyta tylko <br> użytkownikowi na ekranie nic się nie zmienia.

Mam nadzieję, że zrozumiałeś smile.gif - prościej nie umiem
Pewnie w tym co napisałem jest trochę nieprawdy, ale jak dla początkującego może być i tego się powinieneś trzymać smile.gif

Pozdrawiam
everth
W sumie w HTML można wymusić pokazywanie znaków specjalnych przez umieszczenie treści między znacznikami <pre> ale jak większego sensu to nie ma.
Terrqge
Cytat(nospor @ 26.11.2011, 09:25:29 ) *
Przecież podałem ci przykłady kiedy się używa \n. A to że nie zrozumiałeś to już nie moja wina. Ba, mało tego, nawet Kaloryfer nie zrozumiał, patrząc na jego post wyżej.... wink.gif


Po przczytaniu mojego pierwszego posta i zdaniu, ze dopiero zaczynam sie uczyć javascript można wywnioskować, że jestem początkujący i do mnie trzeba jak do nooba. Co do tego przykładu z generowaniem pliku tekstowego, to nie wiedziałem że Javascript takie coś w ogóle potrafi. wink.gif

Cytat
Kolega tu wspomnial, ze nie rozumie tego przykladu. Ja moge dodac tylko, ze "\n" mozna uzyc w PHP w niektorych przypadkach, bo o to mu chyba chodzilo.


To w jakim my dziale jesteśmy? Ja o PHP nic nie wspomniałem i jakoś szczerze mówiąc to mnie puki co nie obchodzi używanie \n w PHP, ale w Javascript.


Wielkie dzięki kamil4u, teraz już załapuję o co chodzi. Ale autorzy kursów javascript w jakimś celu muszą podawać to, że \n - to nowy wiersz. Rozumiem, ze HTML nie widzi w ten sposób przejścia do nowej linii... <- to jak najbardziej pojmuję. Czyli nospor mówił o edytorze tekstu umieszczonym na stronie internetowej? I to tam ma działać to \n?
alexandrus
Może autor programuje też np. w C czy innym języku i tak napisał zapominając, że przeglądarki nie interpretują białych znaków. O to co autor miał na myśli trzeba by pytać autora.
Fakt jest taki, że przejście do nowej lini to w html jest <br>, "\n" zadziała np. w textarea albo jeśli tekst go zawierajacy znajdzie się pomiędzy <pre></pre>.
Terrqge
Dzięki za rozwianie wątpliwości. Problem uważam za rozwiązany. wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.