javascript - 单击以随机创建标记/标签,但从标签默认值开始

标签 javascript jquery

当我点击我的按钮时,我正在尝试创建一个 Bootstrap 标签。但是每次我点击它应该从标签默认开始并通过开关工作直到它到达最后一个回到开头

如下图所示,它不是从 label-default 开始的

enter image description here

Question each time I click on the button to create label how can I make sure it does not double up and starts from label-default

演示

CODEPEN DEMO

脚本

$(document).on('click', '#category_button', function(e){    

    e.preventDefault();

    //if ($("#label-" + category_name).length  == 0) {

        var rand = Math.floor((Math.random() * 5) + 1);

        switch(rand){
          case 1:
            element = 'label-default';
            break;
          case 2:
            element = 'label-primary';
            break;
          case 3:
            element = 'label-success';
            break;
          case 4:
            element = 'label-info';
            break;
          case 5:
            element = 'label-warning';
            break;
        }

        html = '';
        html += '<li id="">';
        html += '<span class="label ' + element + '">';
        html += 'Hello';
        html += '</span>';
        html += '</li>';

        $('.categories ul').append(html);
    //}
});

最佳答案

您可以使用数组、Array.prototype.slice()Array.prototype.splice() 来创建原始数组的副本。如果复制的数组的 .length 等于 0 从数组中删除第一个元素,将元素设置为 element 值,否则获取,设置随机元素将数组复制为 element 值,重复该过程。

var arr = ["default", "primary", "success", "info", "warning"];
var label = "label-";
var copy = [];

$(document).on("click", "#category_button", function(e) {

  e.preventDefault();

  var element, rand;

  if (!copy.length) {
    copy = arr.slice(0);
    element = copy.splice(0, 1);
  } else {
    rand = Math.floor(Math.random() * copy.length);
    element = copy.splice(rand, 1);
  }

  var html = $("<li>", {
    "id":"",
    "html":$("<span>", {
             "class": label.slice(0, -1).concat(" ", label, element),
             "html": label + element
           })
  });

  $(".categories ul").append(html);

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
<button id="category_button">click</button>
<div class="categories">
  <ul>
  </ul>
</div>

codepen http://codepen.io/anon/pen/PpXryW

关于javascript - 单击以随机创建标记/标签,但从标签默认值开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43152422/

相关文章:

javascript - $.Deferred() 和 $.ajax() 在 Node.JS 中不起作用

javascript - js/html5 显示本地存储

javascript - jQuery : how to trigger an event when the user clear a textbox

jquery - 我所有的(jQuery UI)单个 slider 都获得相同的值

javascript - 如何使用大量粒子获得更好的性能? Canvas

javascript - Bootstrap 根据其他 div 的可见性重新定位 div

javascript - 我正在尝试利用 Click Funnels,并向 "Header Custom Tracking"注入(inject)一些 JS,但它是在页面之后加载的吗?

javascript - 检索 Observable 内的值

javascript - 如何使用 Protractor 检查页面是否有 Angular

javascript - 如何在 Red Hood 模板中添加自动幻灯片