javascript - Why is my browser forcing the script tag inside the body tag? -


i'm trying learn javascript beginning understand it.

what i'm trying here output nodetypes of each element found in <body> tag. understand there invisible texts between <body>'s child elements unknown reason, makes output

3 1 3 1 

i put <script> tag outside <body> tag, it's still being counted in for loop, resulted last digit of 1 in 3 1 3 1 loop sequence. why? why <script> tag being forced inside <body> tag browser?

<html>     <body id = "bodytest">          <p>some text</p>     </body>      <script type="text/javascript">         var c = document.body.childnodes;          var txt = "";         for(var k = 0; k < c.length; k++) {             txt += c[k].nodetype + " ";             console.log(txt);             console.log(c[k].nodename);         }         alert(txt);     </script> </html> 

here code using.

<html>     <body id = "bodytest">          <p>some text</p>     </body>      <script type="text/javascript">         // code above     </script> </html> 

that's not valid html. <html> tag can contain <head> , <body> tags, not <script>.

see the specification:

permitted contents
1 head element, followed 1 body element

when browser encounters broken html, tries fix it. in case, means treating <script> tag though in <body>.


Comments

Popular posts from this blog

html - Styling progress bar with inline style -

java - Oracle Sql developer error: could not install some modules -

How to use autoclose brackets in Jupyter notebook? -