我在 css 文件中有一个这样的下拉菜单样式,
nav ul li a
{
display: block;
padding: 5px 4px;
border-radius: 25px;
color: #64FFFF;
text-decoration: none;
}
我想用 DOM 使用这样的东西来更改它
var TAG = document.getElementById("nav ul li a");
TAG.setAttribute("style", "padding: 25px 40px;");
但是它不起作用,是否可以这样做还是我需要另一种方法。我可以看到我有四个不同的标签可以引用,但是JavaScript怎么可能。我是否找到父类并以某种方式向下工作?
你正在使用jQuery这样的选择器,你需要提供一个ID
,因为你正在使用getElementById
var TAG = document.getElementById("hello");
TAG.setAttribute("style", "padding: 25px 40px;");
演示
演示 2(没什么好看的,只是使用了color
属性而不是padding
,以便效果可见)
标记看起来像
<nav>
<ul>
<li>
<a href="#" id="hello">hello</a>
</li>
</ul>
</nav>
document.getElementById
搜索 ID
document.getElementsByTagName
搜索标记名称并返回匹配的数组
document.getElementsByClassName
搜索类名并返回匹配的数组
现在,如果你想像jQuery一样做,document.querySelectorAll
就是你要找的。
轮到哪个将返回一个数组。所以你需要循环遍历它
var a = document.querySelectorAll('nav ul li a');
for(var i=0;i<a.length;i++){
a[i].setAttribute('style','padding:25px 40px'); // a[i].style.padding="25px 40px";
}
/*
another way to loop which is partially faster
var len = a.length;
while(len--){
a[len].setAttribute('style','padding:25px 40px");
}
*/
您可以将 css 选择器与 querySelectorAll()
一起使用来获取匹配的元素,在您的情况下是这样的。
var tag = document.querySelectorAll('nav ul li a');
tag[0].setAttribute("style", "padding: 250px 40px;");
我会使用另一种方法。我让浏览器为我做 ccs 匹配,只是在 nav 元素上添加一个类。
nav ul li a
{
display: block;
padding: 5px 4px;
border-radius: 25px;
color: #64FFFF;
text-decoration: none;
}
nav.alternate ul li a
{
padding: 25px 40px;
}
你的javascript(假设只有一个标签导航并且它还没有类):
document.getElementsByTagName("nav")[0].className = "alternate"
你不能用这种方式获取元素,你必须给每个标签一个唯一的id,然后通过以下方式获取元素
var Tag=document.getElementById('uniqueId');
要在不指定 id 的情况下获取元素,您必须通过以下方式使用 jQuery
var element=jQuery(".nav ul li a");
element.css('padding','25px 40px');