[英]Using vanilla javascript, add class to body from within head
我想在head
标签中做一个快速的 javascript 检查,像这样:
<html>
<head>
...
<script>
document.body.classList.remove("no-js");
document.body.classList.add("js");
</script>
</head>
<body class='no-js'>
...
</body>
</html>
这不起作用。 Cannot read property classList of null
,这...很公平。 如果我将<script>
标签移动到<body>
,一切正常,但我想要<head>
的<script>
标签。
我有哪些选择?
编辑:我应该对错误更清楚。 我意识到问题是当我尝试添加类时主体尚未加载。 但是,我最初使用了一些 Modernizr,它以某种方式能够从头部修改主体类,我认为它没有使用window.onload
或类似的东西。
加载正文后运行代码。 有几种方法可以解决这个问题:
onload
调用它。 <html> <head> ... <script> function load() { document.body.classList.remove("no-js"); document.body.classList.add("js"); } </script> </head> <body onload="load();" class='no-js'> ... </body> </html>
DOMContentLoaded
事件侦听器回调,以便在加载 dom 元素后调用。 <html> <head> ... <script> document.addEventListener("DOMContentLoaded", function() { document.body.classList.remove("no-js"); document.body.classList.add("js"); }); </script> </head> <body class='no-js'> ... </body> </html>
script
标签移动到页面的末尾。 <html> <head> ... </head> <body class='no-js'> ... <script> document.body.classList.remove("no-js"); document.body.classList.add("js"); </script> </body> </html>
在执行 javascript 时没有 body 标记,因为浏览器还没有处理它。 您需要在正文中添加脚本标记,或者将其添加为要在文档加载时执行的事件。 有关示例,请参阅DOMContentLoaded 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.