Javascript 我如何使用一个CSS属性来更改CSS属性。以它的名义?
在我试图为其创建主题的网站中,他们有一个CSS名称ul.menu li ul,我想更改它的border top属性。我知道如何使用简单的CSS名称,如mycssname,但如何使用JavaScript中的点来实现这一点 我试过这些:Javascript 我如何使用一个CSS属性来更改CSS属性。以它的名义?,javascript,css,Javascript,Css,在我试图为其创建主题的网站中,他们有一个CSS名称ul.menu li ul,我想更改它的border top属性。我知道如何使用简单的CSS名称,如mycssname,但如何使用JavaScript中的点来实现这一点 我试过这些: document.getElementsByClassName("ul.menu li ul")[0].style.borderTop = "5px solid #fff" document.getElementsByCla
document.getElementsByClassName("ul.menu li ul")[0].style.borderTop = "5px solid #fff"
document.getElementsByClassName("ul.menu li ul")[0].style.borderTop = "5px solid #fff"
以下是HTML:
<ul class="ddm" style="display: block;">
当我检查它时,它会在CSS检查器中显示ul.menu li u的可修改值
但是它们都给出了一个未定义的错误。您可以将选择器作为
querySelector()方法的参数:
document.querySelector('ul.menu li ul').style.borderTop = "5px solid #fff";
我发现站点中有多个元素与该选择器匹配,因此您必须将样式设置为所有此类元素:
document.querySelectorAll('ul.menu li ul').forEach(e=>e.style.borderTop = "5px solid #fff");
我认为您应该尝试向元素添加类属性,而不是使用层次结构
<h1 class="app"> Hello world </h1>
document.getElementsByClassName("app").style.borderTop = "5px solid #fff"
你好,世界
document.getElementsByClassName(“app”).style.borderTop=“5px solid#fff”
您可以执行以下操作
const elements = document.getElementsByClassName("ddm");
elements[0].style.borderTop = "5px solid #fff";
不能将CSS选择器与getElementsByClassName()
一起使用,必须为其定义类名。
因此,您可以:
document.querySelector(“ul.menu li ul”).style.borderTop=“5px solid#fff”
或者
document.queryselectoral(“ul.menu li ul”)[0]。style.borderTop=“5px solid#fff”
阅读以下文档:
文档接口的getElementsByClassName方法返回
具有所有给定属性的所有子元素的类数组对象
类名
请记住,CSS选择器从右向左读取,您的选择器需要类似以下结构的内容:
-
正如其他人所提到的,以下事实上是可行的
document.querySelector('ul.menu li ul').style.borderTop=“5px solid#fff”;
但是,引用()中的站点有两个元素与该选择器匹配。它们仅在悬停时可见。(主页和杂项)
因此,我们需要修改代码以更新与选择器匹配的所有元素:
let result=[…document.queryselectoral('ul.menu li ul')].forEach(el=>{
el.style.borderTop='5px实心#fff';
})
或者,如果您只想更新第二个元素:
document.queryselectoral('ul.menu li ul')[1].style.borderTop='5px solid#fff';
您能否添加一段HTML,以便我们更好地了解您要添加样式的内容?@FoundingBox done。我添加了HTML。很明显,对于给定的HTML,没有适合CSS选择器的DOM元素“ul.menu li ul”
和“ul.menu li ul”
。您希望document.getElementsByClassName(“ul”)[“menu li ul”]
返回什么?ul.menu
正在寻找一个类似
的元素,您提供的示例是
。它输出了“5px solid#fff”,但它不工作。如果可能的话,请查看。当您将鼠标悬停在“misc”按钮上时,您会看到一个红色的小条,我正在尝试更改它。请使用更新后的代码段,使用querySelectorAll
进行测试。您有两个元素与选择器匹配,其中一个是Home
的下拉列表,另一个是misc
的下拉列表。使用第一个代码段,您仅将样式应用于主页
下拉列表。我必须为Misc使用什么?第二个代码段如果我不拥有该网站,该如何执行?这些都不起作用。我不确定我认为这可能是因为它不是ul.menu li ul,但我真的认为它是。OP更新了问题,无序列表(ul)元素有一个不同的类名,ul.ddm li ul
可能适用于您的答案。
const elements = document.getElementsByClassName("ddm");
elements[0].style.borderTop = "5px solid #fff";