Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem JS vypisuje řádky které neexistují

Ahoj, mám takový kód

HTML

<body>
1
</body>

JavaScript

const BODY = document.body.textContent;
const ARRAY = BODY.split('\n');
console.log("Výpis pole: ", JSON.stringify(ARRAY, null, 2));
console.log("Počet řádků v body:", ARRAY.length)

CONSOLE

Výpis pole:  [
  "",
  "1",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  "",
  ""
]

Počet řádků v body: 19

Otázka zní proč, co mám špatně? Díky

Předmět Autor Datum
Použi filter metódu. const BODY = document.body.textContent; const ARRAY = BODY.split('\n').filter…
Ale 18.09.2024 15:31
Ale
Špatně je ten předpoklad, že <body> vypadá tak, jak jsi psal. Určitě toho tam bude mnohem víc.
Wikan 18.09.2024 15:37
Wikan
Ale nemám, element body vypadá přesně jak je tady.
MAREK999 19.09.2024 10:22
MAREK999
Chápu, že tomu věříš, ale prostě to tak není.
Wikan 19.09.2024 10:48
Wikan
Tak ak tvoj body vyzerá: <body> 1 </body> Tak serializovane to vyzerá: <body>/n1/n</body> Le… poslední
Ale 19.09.2024 11:19
Ale
zkus zapojit mozek a zkoumat to všestranně,´: -neuzavřený tag body. -zkus jiný tag a document.queryS…
tupolev 18.09.2024 18:49
tupolev

Použi filter metódu.

const BODY = document.body.textContent;
const ARRAY = BODY.split('\n').filter(Boolean);
console.log("Výpis pole: ", JSON.stringify(ARRAY, null, 2));
console.log("Počet řádků v body:", ARRAY.length)

Tak ak tvoj body vyzerá:


<body>
1
</body>

Tak serializovane to vyzerá:


<body>/n1/n</body>

Lenže, zrejme máš medzeri za "1", alebo nejaké odsadenie pred </body>

Ak máš:


<html>
    <body>
        1
    </body>
</html>

Tak vlastne máš serializované:


<html>\n\s\s\s\s<body>\n\s\s\s\s\s\s\s\s1\n\s\s\s\s</body>\n</html>

A to ešte prehliadač sám dopĺňa html tag okolo body, ak html tag chýba.

Z výstupu, ktorý ti split dáva, to vyzerá že máš nejaký takýto kód:


<html>
    <body>
1

















    </body>
</html>

Minimálne v samotnom DOM.

A ak používaš nebodaj nejaké online "REPL", tak ten má úplné inú podobu DOM.

zkus zapojit mozek a zkoumat to všestranně,´:
-neuzavřený tag body.
-zkus jiný tag a document.querySelector(X).textContent : X= body, testovaciDiv,HTML,head
-podívej se na to bez splitu
-pomocník je webová konzole, tam vidíš výsledek hned, jak (skoro, někdy), píšeš
-takže můžeš vidět rovnou co je zač document.body, jaké další mu vlastnosti,

-

moje spekulace:
ty si myslíš, že analyzuješ element body, tím bych si nebyl jistý. například ajax odpovědi má taky body a je to shoda jmen . zkusil bych tedy to d.qS("body")

Zpět do poradny Odpovědět na původní otázku Nahoru