核心提示:一、关于 原生js获取上一个兄弟节点 以及子节点的问题1.获得上一个兄弟节点previousElementSibling 这个方法 可以获得2.获取第一个子节点子节点要先全部获取,然后排除 text元...
一、关于 原生js获取上一个兄弟节点 以及子节点的问题
1.获得上一个兄弟节点
previousElementSibling 这个方法 可以获得
2.获取第一个子节点
子节点要先全部获取,然后排除 text元素,然后在获取第一个子节点
3.原生js 修改样式
不能用setattribute 要用obj.className = "Triangle";//替换样式 obj.className += " "+ "Triangle";//追加样式
二、利用纯CSS画图标
三、代码
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<script type="text/javascript">
function f(str){
//当前节点
var sub_menu = document.getElementById(str);
//当前节点的上一个兄弟节点
var cjn =sub_menu.previousElementSibling;
//排除子节点中的text元素
/*标签与标签之间不能换行,每当你换行JS 默认会把换行当成text元素加入到数组中*/
var elem_child = cjn.childNodes;
for(var i=0 in elem_child){ //遍历子元素数组
if(elem_child[i].nodeName == "#text" && !/\S/.test(elem_child[i].nodeValue)) {
//删除数组中的text
cjn.removeChild(elem_child[i]);
}
}
//获得第一个子节点
var cjnfc = cjn.firstChild;
var dis_v = sub_menu.style.display;
if(dis_v == "block"){
sub_menu.style.display = "none";
cjnfc.className = "Triangle";//替换样式
} else{
sub_menu.style.display = "block";
cjnfc.className = "InvertedTriangle";
}
}
</script>
<style type="text/css">
#db1,#db2,#db3{
display: none;
}
#page{
width:1280px;
margin:0 auto;
text-align:center;
background-color:#F8F8F8;
border: solid 1px #E7E7E7;
}
#head{
width:1275px;
}
#content{
margin:0 auto;
width:1275px;
overflow: auto;
}
#left{
position:absolute;
height:700px;
overflow:auto;
background-color:#E7E7E7;
border:1px solid #E7E7F8;
float:left;
text-align:left;
width:250px;
}
#right{
padding-right:5px;
float:right;
width:1000px;
height: auto;
min-height: 700px;
overflow: hidden;
}
iframe{
width: 100%;
min-height: 700px;
height: auto;
}
ul,li{
list-style-type:none;
text-align:left;
margin:0px;
padding:6px;
}
li ul li{
padding-left:13px;
}
a:link{
color: #000;
text-decoration:none;
}
a:visited{
color: #000;
text-decoration:none;
}
a:hover{
color: #ff0000;
text-decoration:none;
}
a:active{
color: #ff0000;
text-decoration:none;
}
/* 纯CSS 画图标 */
.InvertedTriangle {
text-align:center;
width:0px;
height:0px;
float:left;
border-top:10px solid #000000;
border-left:5px solid transparent;
border-right:5px solid transparent;
position: relative;
top: 5px;
right: 8px;
}
.Triangle {
text-align:center;
padding-right:5px;
width: 0;
height:0;
float: left;
border-left: 10px solid #000000;
border-top: 5px solid transparent;
border-bottom: 5px solid transparent;
position: relative;
top: 5px;
right: 5px;
}
</style>
<body>
<p id="page">
<p id="head" style="width:100%;hegint:50px;">
<h1>Mysql数据库</h1>
</p>
<p id="content">
<p id="left">
<p>数据库地址是127.0.0.1</p>
<ul>
<li>
<span onclick="f('db1')">
<span class="Triangle"></span><span>数据库一</span></span>
<ul id="db1">
<li>表一</li>
<li>表二</li>
<li>表三</li>
</ul>
</li>
<li>
<span onclick="f('db2')"><span class="Triangle"></span><span>数据库二</span></span>
<ul id="db2">
<li><a href="https://www.baidu.com" target="myFrameName">表一</a></li>
<li>表二</li>
<li>表三</li>
</ul>
</li>
<li><span onclick="f('db3')"><span class="Triangle"></span><span>数据库三</span></span>
<ul id="db3">
<li>表一</li>
<li>表二</li>
<li>表三</li>
</ul>
</li>
</ul>
</p>
<p id="right">
<iframe id="myFrameName" width="100%" height="100%" scrolling="no" name="myFrameName" frameborder="0" ></iframe>
</p>
</p>
</p>
</body>
</html>


