我的无效传法:tabs[i].onmouseover = showTab(vtabs, vcontents);
var vtabs = document.getElementsByClassName('tab-head')[0].getElementsByTagName('h2'),
vcontents = document.getElementsByClassName('tab-content')[0].getElementsByTagName('div');
function changeTab(tabs, contents) {
for(var i = 0, len = tabs.length; i < len; i++) {
tabs[i].onmouseover = showTab(vtabs, vcontents);
}
}
function showTab(tabs, contents) {
for(var i = 0, len = tabs.length; i < len; i++) {
if(tabs[i] === this) {
tabs[i].className = 'selected';
contents[i].className = 'show';
} else {
tabs[i].className = '';
contents[i].className = '';
}
}
}
changeTab(vtabs, vcontents);
htm代码
<div class="tab-head">
<h2 class="selected">1</h2>
<h2>2</h2>
<h2>3</h2>
</div>
<div class="tab-content">
<div class="show">content1</div>
<div>content2</div>
<div>content3</div>
</div>
css代码
h2 {
border-top: solid cornflowerblue 1px;
border-left: solid cornflowerblue 1px;
width: 50px;
height: 25px;
margin: 0;
float: left;
text-align: center;
}
.tab-content {
border: solid cornflowerblue 1px;
width: 152px;
height: 100px;
}
.tab-content div{
display: none;
}
.selected {
background-color: cornflowerblue;
}
.tab-content .show{
display: block;
}
问题描述
问题出现的环境背景及自己尝试过哪些方法
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
abs[i].onmouseover = showTab(vtabs, vcontents) 这么写是把showTab的返回值作为事件回调。
abs[i].onmouseover = showTab.bind(abs[i],vtabs, vcontents)