繁体   English   中英

使用JavaScript更改嵌套HTML元素的字体颜色

[英]Change font color of nested HTML element with JavaScript

我想要的字体颜色改变aspeedred
a不能得到自己的ID或类)

如何使用JavaScript做到这一点?

<!DOCTYPE html>
<html>
<body>
<div class="gun">
<a href="#">Hello World!</a>
</div>


<div class="speed">
<a href="#">Hello World!</a>
</div>


<script>
... 
</script>

<div>

</body>
</html>

使用document.querySelector选择a标签并使用style.color更改颜色:

 document.querySelector('.speed a').style.color = 'red'; 
 <div class="gun"> <a href="#">Hello World!</a> </div> <div class="speed"> <a href="#">Hello World!</a> </div> 

假设您只有一个<a> ,那么使用querySelector发布的较早答案是正确的。 那是因为它仅选择与选择器匹配的第一个元素。

如果您的DOM中碰巧有多个.speed a实例, .speed a可以改用document.querySelectorAll 这将为您提供一个与选择器匹配的所有元素的可迭代列表; 然后您可以遍历所有这些对象。

 var linksToChange = document.querySelectorAll(".speed a") linksToChange.forEach(function(toChange) { toChange.style.color = "red"; }); 
 <div class="gun"> <a href="#">Hello World!</a> </div> <div class="speed"> <a href="#">Hello World #1!</a> <div id="someDiv"> <a href="#">Hello World #2!</a> </div> </div> <div class="speed"> <a href="#">Hello World #3!</a> </div> 

如果只想突出显示.speed元素的直接子元素<a> ,则可以将选择器字符串更改为.speed > a 在上述情况下,这将成为“ Hello World#2!”。 保留默认颜色,因为它嵌套在div

另外,我假设您要动态更改链接,而不只是简单地从一开始就将其更改为红色。 正如其他人指出的那样,如果您希望链接简单地为红色并保持红色,则应使用CSS而不是JavaScript设置样式。

您可以使用document.querySelecotr()进行选择,然后将样式更改为所需的样式

document.querySelector(".speed a")

 document.querySelector(".speed a").style.color = "red" 
 <div class="gun"> <a href="#">Hello World!</a> </div> <div class="speed"> <a href="#">Hello World!</a> </div> 

在我的拙见中,不使用课程来应用样式是一个糟糕的选择。 您没有指定触发样式更改的内容,因此假定您希望在加载样式时进行更改。

 document.querySelector('.speed>a').style.color = "red"; 
 <div class="gun"> <a href="#">Hello World!</a> </div> <div class="speed"> <a href="#">Hello World!</a> </div> 

由于JavaScript样式是从CSS文件中“隐藏”的,并且需要更改代码(例如,将颜色从红色更改为蓝色)时,需要更改代码,因此这是一种糟糕的样式维护方式。

您应该改用现有的类。

 .speed>a{ color: red; } 
 <div class="gun"> <a href="#">Hello World!</a> </div> <div class="speed"> <a href="#">Hello World!</a> </div> 

使用document.querySelector('.speed a') ,然后将style.color更改为红色。

有关选择器的更多信息,请参见此CSS选择器

 document.querySelector('.speed a').style.color = 'red'; 
 <div class="gun"> <a href="#">Hello World!</a> </div> <div class="speed"> <a href="#">Hello World!</a> </div> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM