第一个孩子最后一个孩子Dom遍历不工作

时间:2016-02-10 15:57:51

标签: javascript html css dom traversal

我正在学习Javascript并遇到一个我真的不明白的奇怪问题。我跟随Jon Duckett的书Javascritp和Jquery。我正如本书中所描述的那样做,但由于某种原因它不起作用。根据代码,ul的第一个孩子应该得到一类当前但不是。有人可以帮忙解释代码出错的原因。感谢

var ul = document.getElementsByTagName('ul')[0];

var firstItem = ul.firstChild;

firstItem.setAttribute('class', 'current');
li {
  list-style: none;
  padding: 10px 15px;
  width: 220px;
  border: 1px solid #eeeeee;
}

.current {
  background: #84ac47;
}

#nav {
  width: 220px;
  border: 1px solid #dedede;
  padding: 10px 15px;
  margin-left: 40px;
  overflow: hidden;
}

#previous {
  float: left;
}

#next {
  float: right;
}
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
<ul id='list'>
  <li class='null'>One</li>
  <li id='two'>Two</li>
  <li>Three</li>
  <li>Four</li>
  <li>Five</li>
</ul>
  <div id="nav">
    <button id="previous">Previous</button>
    <button id="next">Next</button>
  </div>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

你应该尝试做这样的事情:

var firstItem = ul.children[0];

答案 1 :(得分:1)

你提到了一本关于JavaScript和jQuery的书,所以我想如果你对jQuery版本感兴趣的话我会添加一个替代方法:

<强>第一

$("ul#list li:first").addClass("current");

过去

$("ul#list li:last").addClass("current");