gpt4 book ai didi

javascript - 我尝试用JS改变颜色但它不起作用

转载 作者:行者123 更新时间:2023-11-28 03:02:45 25 4
gpt4 key购买 nike

我在 Firefox 控制台中运行此代码时遇到错误。错误:类型错误:redSquare 为空然而在codepen中它工作得很好。

我不知道为什么会这样。浏览器中没有任何反应。

 /* Document Object Model */


const redSquare = document.querySelector('.red-square');
redSquare.style.color = 'limegreen';

const elementsToChange = document.querySelectorAll('.js-target');
for (let i = 0 ; i < elementsToChange.length; i++){
const currentElement = elementsToChange[i];
currentElement.innerText = "Modified by Js!";
}
.red-square {
border: 2px solid red;
color: black;
background-color: dodgerblue;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width>, initial-scale=1.0">
<title>Part-6</title>
<link href="../CSS3/1.css" rel="stylesheet"/>
<script src= "../JavaScript/6.js"></script>
</head>
<body>
<h1 class = "red-square">DOM</h1>
<ul>
<li class="js-target">Unchanged</li>
<li class="js-target">Unchanged</li>
<li>Won't Change</li>
<li class="js-target">Unchanged</li>
</ul>
</body>
</html>

最佳答案

document.querySelector('missingSelector')返回null

document.querySelectorAll('missingSelector')返回NodeList (.长度= 0)

因此请确保 DOM 内容已加载并可供查找。用 window.onload = function(){...your code here} 包装您的代码或其他方式。

最好将脚本放在 <body> 的底部就在</body>之前.

原因是解析和解释器在第一个周期获取变量的值。所以变量取值undefinednull首先。另外,DOM 结构需要一些时间来构建,此时 js 已经可以工作了。

更好的做法是将脚本放在底部,但它不能提供 100% 的保证。将依赖于 DOM 的代码包装到 window.onload 的最佳实践或"DOMContentLoaded"文档的事件监听器。

这就是为什么最好在单独的文件中或主函数之外(例如 window.onload)初始化和定义所有函数和常量。里面只依赖于DOM元素的函数和事件。

关于javascript - 我尝试用JS改变颜色但它不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60837917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com