[英]pure javascript tabs no jquery?
How can i create a multiple tabs like i have one select box ,i want to fire function on onchange by which i want to display div if they match option value,if option value is 1 i want div with id 1 to get displayed and rest hide.我如何创建多个选项卡,就像我有一个选择框一样,我想在 onchange 上触发函数,如果它们匹配选项值,我想通过它显示 div,如果选项值为 1,我希望 id 为 1 的 div 被显示并休息隐藏。 code would b like
代码会喜欢
<select id="sel" onChange="valueNew()">
<option> 1 </option>
<option> 2 </option>
<option> 3 </option>
</select>
<div style="background:#ddd;width:100%; height:500px; display:none"></div>
<div style="background:#ddd;width:100%; height:500px;display:none"></div>
<div style="background:#ddd;width:100%; height:500px;display:none"></div>
You can do something like this你可以做这样的事情
// get all div with class name 'div' var div = document.getElementsByClassName('div'); function valueNew(ele) { // iterating over all div and hidding all for (var i = 0; i < div.length; i++) { div[i].style.display = 'none' } // getting div which is need to show using value of selected option div[ele.value].style.display = 'block'; } // trigger change event to show default div document.getElementById('sel').onchange();
<select id="sel" onChange="valueNew(this)"> <option value="0">1</option> <option value="1">2</option> <option value="2">3</option> </select> <div class="div" style="background:#ddd;width:100%; height:500px; display:none">1</div> <div class="div" style="background:#ddd;width:100%; height:500px;display:none">2</div> <div class="div" style="background:#ddd;width:100%; height:500px;display:none">3</div>
This is how I would do it:这就是我将如何做到的:
function valueNew() {
for (var i = 0; i < document.querySelectorAll("div").length; i++) {
(document.querySelectorAll("div")[i]).style.display = "none";
}
document.querySelectorAll("div")[document.querySelector("#sel").value - 1].style.display = "block";
}
Find the following example:查找以下示例:
function changeTab(value) { var tabs = document.getElementsByClassName("tabs"); var i; for(i=0; i<tabs.length; i++) { tabs[i].style.display = "none"; } document.getElementById("tab_" + value).style.display = "block"; }
<select id="sel" onChange="changeTab(this.value)"> <option value="1"> 1 </option> <option value="2"> 2 </option> <option value="3"> 3 </option> </select> <div class="tabs" id="tab_1" style="background:#ddd;width:100%; height:500px; display:none">First Tab</div> <div class="tabs" id="tab_2" style="background:#ddd;width:100%; height:500px;display:none">Second Tab</div> <div class="tabs" id="tab_3" style="background:#ddd;width:100%; height:500px;display:none">Third Tab</div>
I do it like:我这样做:
'use strict';
function Tabs() {
var bindAll = function() {
var menuElements = document.querySelectorAll('[data-tab]');
for(var i = 0; i < menuElements.length ; i++) {
menuElements[i].addEventListener('click', change, false);
}
}
var clear = function() {
var menuElements = document.querySelectorAll('[data-tab]');
for(var i = 0; i < menuElements.length ; i++) {
menuElements[i].classList.remove('active');
var id = menuElements[i].getAttribute('data-tab');
document.getElementById(id).classList.remove('active');
}
}
var change = function(e) {
clear();
e.target.classList.add('active');
var id = e.currentTarget.getAttribute('data-tab');
document.getElementById(id).classList.add('active');
}
bindAll();
}
var connectTabs = new Tabs();
http://codepen.io/wangel13/pen/OXBrRp http://codepen.io/wangel13/pen/OXBrRp
And code:和代码:
https://github.com/WaNgeL-SaTaR/pure-js-tab https://github.com/WaNgeL-SaTaR/pure-js-tab
<select id="sel" onChange="valueNew()">
<option value="one"> 1 </option>
<option value="two"> 2 </option>
<option value="three"> 3 </option>
</select>
<div id="one" style="background:#ddd;width:100%; height:500px; display:none"></div>
<div id="two" style="background:#ddd;width:100%; height:500px;display:none"></div>
<div id="three" style="background:#ddd;width:100%; height:500px;display:none"></div>
I have done a couple of changes in your HTML.我对您的 HTML 进行了一些更改。 You can easily identify it.
您可以轻松识别它。 Now for the JS part.
现在是 JS 部分。
function valueNew(){
var x = document.getElementById("sel");
for(var i=0; i< x.options.length;i++){
if(x.value === x.options[i].value){
document.getElementById(x.options[i].value).style.display="block";
}
else
{
document.getElementById(x.options[i].value).style.display="none";
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.