aiwei笑
2015-10-30 11:16
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
</head>
<body>
<ul id="con">
<li id="lesson1">javascript
<ul>
<li id="tcon"> 基础语法</li>
<li>流程控制语句</li>
<li>函数</li>
<li>事件</li>
<li>DOM</li>
</ul>
</li>
<li id="lesson2">das</li>
<li id="lesson3">dadf</li>
<li id="lesson4">HTML/CSS
<ul>
<li>文字</li>
<li>段落</li>
<li>表单</li>
<li>表格</li>
</ul>
</li></ul>
<script type="text/javascript">
var mylist = document.getElementById("tcon");
var plist = mylist.parentNode.parentNode.nodeName;
for(var i= 0;i<plist.length; i++){
if(plist[i].getAttribute("id")==lesson4){
document.write(plist[i].nodeValue);
}
}
</script>
</body>
</html>
题主弄错了概念
getAttribute()和setAttribute()是获取、设置元素节点的属性的值。
节点有四种:1.元素节点、2. 属性节点、3. 文本节点、4. 文档节点
具体看 9.7节点属性。
而var plist = mylist.parentNode.parentNode.nodeName获得的是<li id="lesson1">的节点名,如果用document.write(plist)输出的话应该是LI
我的做法是这样的:
var n = mylist.parentNode.parentNode.parentNode.childNodes;
//获取最顶层父节点的所有子节点
document.write(n.length+"<br>");
for(var i=0; i<n.length; ++i){
// 先判断出li的元素节点再判断获取元素节点ID
if( n[i].nodeName == "LI" && n[i].getAttribute("id") == "lesson4"){
document.write(n[i].childNodes[0].nodeValue+"<br>");
}
}
望采纳!
什么都不输出
什么不输出
JavaScript进阶篇
468060 学习 · 21891 问题
相似问题