【问题标题】:Generating different content for different tabs in Javascript在 Javascript 中为不同的选项卡生成不同的内容
【发布时间】:2018-02-15 15:57:09
【问题描述】:

所以我有一个代码,可以让我使用 for 循环根据用户的输入生成选项卡。

var tabs = "";
var y = 1;
for (var x = 0; x < tabNum; x++) 
{
    tabs += "<li class = 'tabbers'>" + "<a href='#tab'>Tab</a>"  + "</li>"
}
document.write(tabs)

现在我想做的是为我创建的标签生成内容,例如,标签 1 的内容是标签 1,标签 2 的内容是标签 2。关于如何实现的任何想法这?我所做的只是循环标签中的内容,这不是我想要的。

【问题讨论】:

  • 您是说要生成其他单独的元素,每个选项卡一个,单击您显示的代码中的链接将显示具有相关内容的相关元素?

标签: javascript jquery tabs


【解决方案1】:

我认为这可以帮助你。我从 w3school 示例中获得使用 bootstrap 3。

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>

<div class="container">
  <h2>Dynamic Tabs</h2>
  <ul class="nav nav-tabs">
    <li class="active"><a href="#home">Home</a></li>
    <li><a href="#menu1">Menu 1</a></li>
    <li><a href="#menu2">Menu 2</a></li>
    <li><a href="#menu3">Menu 3</a></li>
  </ul>

  <div class="tab-content">
    <div id="home" class="tab-pane fade in active">
      <h3>HOME</h3>
      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
    </div>
    <div id="menu1" class="tab-pane fade">
      <h3>Menu 1</h3>
      <p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
    </div>
    <div id="menu2" class="tab-pane fade">
      <h3>Menu 2</h3>
      <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam.</p>
    </div>
    <div id="menu3" class="tab-pane fade">
      <h3>Menu 3</h3>
      <p>Eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.</p>
    </div>
  </div>
</div>

<script>
$(document).ready(function(){
    $(".nav-tabs a").click(function(){
        $(this).tab('show');
    });
});
</script>

</body>
</html>

【讨论】:

    【解决方案2】:

    这里有一个解决方案https://jsfiddle.net/df56fL56/

    $( function() {
      $('#tabs').append('<ul/>');
      for(var i=1; i<=3; i++){
        $('#tabs ul').append(`<li><a href="#tabs-${i}">Tab ${i}</a></li>`);
        $('#tabs').append(`<div id="tabs-${i}">
          <p>This is Tab ${i}</p>
        </div>`);
      }
    
      $( "#tabs" ).tabs();
    });
    <link href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" rel="stylesheet"/>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
    <div id="tabs"></div>

    这段代码会动态添加tabs

    首先附加一个ul,然后在一个循环中附加liul,并在同一个循环中附加标签内容。

    我使用ES6 backtick 来追加元素。

    希望这会对你有所帮助。

    【讨论】:

      【解决方案3】:

      使用 Jquery

      $("#sub").on('click', function() {
          var tabNum = $('#in').val();
          var tabs = "";
          for (var x = 1; x <= tabNum; x++) {
              $('.app').append("<li class = 'tabbers'>" + "<a href='#tab'>This is Tab" + x + "</a>" + "</li>");
          }
      
      });
      

      示例fiddle..

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-05
        • 2012-10-28
        • 1970-01-01
        • 1970-01-01
        • 2015-12-11
        • 2021-04-03
        相关资源
        最近更新 更多