【发布时间】:2021-03-13 07:42:58
【问题描述】:
我有两个名为 home.html 和 about.html 的 html 页面。 我还有一个名为 main.js 的 js 文件,它与两个 html 页面链接。我在 home.html 中有一个带有“home”类的 div,在 about.html 中有另一个带有“about”类的 div . “home”类有一个文本,“about”类也有一个文本。现在我像这样在我的 main.js 文件中选择它们,
const home = document.querySelector('.home')
const about = document.querySelector('.about')
然后像这样操纵它们,
home.style.color = 'red'
about.style.color = 'green'
但问题只是变量 'home' 改变了它的颜色,而不是变量 '关于'
我认为可能有一种特殊的方法可以从多个页面中选择元素。 但如果有请让我知道 bcz 变量 'about' 没有被任何东西操纵。
const home = document.querySelector('.home')
const about = document.querySelector('.about')
// Manipulated them like this
home.style.color = 'red'
about.style.color = 'green'
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>ES8 Project</title>
<link rel="stylesheet" href="main.css" /> </head>
<body>
<div class="home"> HOME </div>
<script src="main.js"></script>
</body>
</html>
【问题讨论】:
-
现在,
about.html在哪里? -
在sn-p中也贴出JS文件
-
为什么要用JS来做CSS的工作?
-
啊,现在我明白了这个问题。您在两个页面上都有相同的脚本。该脚本不适用于 about.html,因为没有
.home元素,并且尝试设置null.style.color会触发错误。当发生错误时,脚本的执行将停止,这就是为什么其他样式设置永远不会起作用的原因。在尝试访问它们的属性之前,您必须检查元素是否存在,例如if(home) {home.style.color = ...;}。或者可以选择将divs 的类名更改为更通用的名称,以便两个页面可以使用相同的代码(class="intro") -
我想现在我理解了这个问题,是时候解决这个问题了。
标签: javascript jquery-selectors dom-manipulation