简体   繁体   English

纯 javascript 标签没有 jquery?

[英]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";

}

Here is the JSFiddle demo这是JSFiddle演示

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM