我正在尝试将className设置为我的nav元素,但它无法按预期工作。当我手动将类添加到我的HTML时,它会在无序列表项和按钮周围添加边框。当我使用js添加它时,它显示nav标签在检查器中具有属性,但它不添加边框,所以我不相信它正在工作。我究竟做错了什么?我已经链接到文件中的bootstrap cdn和jquery cdn。
HTML
<!doctype html>
<html lang="en-us">
<head>
<title>Exercise 5.9</title>
<meta charset="UTF-8">
<meta equiv="X-UA-Compatible" content="IE=Edge">
</head>
<body id="content">
<!-- Latest compiled and minified CSS -->
<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<nav>
<div>
<ul>
<li>Home</li>
<li>Our Policies</li>
<li>How you can help</li>
<li>What we have accomplished</li>
<button type="button">Donate $10.00</button>
<button type="button">Donate $50.00</button>
<button type="button">Donate $100.00</button>
</ul>
</div>
</nav>
<p>If you would to offer financial support, please choose the buttons above</p>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<script src="exercise-5.9.js"></script>
</body>
</html>
JS
var nav = document.getElementsByTagName("nav");
nav.className = "navbar navbar-default";
console.log(nav);
答案 0 :(得分:4)
尝试将.className =
的属性设置为您想要的任何内容,而不是使用class
。然而,它不起作用的主要原因是因为.getElementsByTagName()
返回一个数组(nodeList),因此您需要确保在设置类时,它已正确编入索引。
使用.setAttribute("atr", "value")
var button = document.getElementById("btnGo");
button.onclick = function () {
var nav = document.getElementsByTagName("nav");
for (var i = 0; i < nav.length; i++) {
nav[i].setAttribute("class", "myClassName");
}
};
使用.className
var button = document.getElementById("btnGo");
button.onclick = function () {
var nav = document.getElementsByTagName("nav");
for (var i = 0; i < nav.length; i++) {
nav[i].className = "myClass";
}
};
答案 1 :(得分:1)
getElementsByTagName()返回一个数组,你应该写document.getElementsByTagName('nav')[0];