Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我如何使用一个CSS属性来更改CSS属性。以它的名义?_Javascript_Css - Fatal编程技术网

Javascript 我如何使用一个CSS属性来更改CSS属性。以它的名义?

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

在我试图为其创建主题的网站中,他们有一个CSS名称ul.menu li ul,我想更改它的border top属性。我知道如何使用简单的CSS名称,如mycssname,但如何使用JavaScript中的点来实现这一点

我试过这些:

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";