【问题标题】:Split counter to array and prepend html将计数器拆分为数组并添加 html
【发布时间】:2018-08-06 05:56:06
【问题描述】:

我正在尝试拆分计数器中的数字,以便我可以单独设置每个数字的样式,到目前为止我已经得到了这个,但似乎无法得到数字。

你可以在jsFiddle上查看代码http://jsfiddle.net/xpvt214o/553785/

在这里不起作用,我做了它,以便在开始之前需要将数字添加到字段中。计数器的要求。

感谢和问候

jQuery(function() {

  $("#countValue").on("keyup change", function() {
    counter = this.value;
    $("#count").text(value);
  });

  if (typeof(localStorage.getItem('counts')) != 'object') {
    counter = parseInt(localStorage.getItem('counts'));
  }
  setInterval(function() {
    $("#count").html(counter);
    ++counter;
    localStorage.setItem('counts', counter);
  }, 2000);

  console.log(counter);


  $("#countValue").focusout(function() {
    $(".hideinput").hide();
  });


  // $('div .number').each(function() {
  //     var number = $(this).text();
  //     var i = 0;

  // $(this).parent().prepend($("<span class='nNumber'></span>"));
  // while (i < number.length) {
  //     $(this).hide();
  //     var nChar = number.charAt(i);
  //     $(this).parent().find('.nNumber').append('<span class="digit-' + nChar + '">' + nChar + '</span>');
  //     i++;
  // }
  // });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="counterParent">
  <h1 id="count" class="number"></h1>
</div>


<!-- Result as below

        <h1 id="count" class="number">
          <span class="num">0</span>
          <span class="num">0</span>
          <span class="num">0</span>
          <span class="num">0</span>          
        </h1>

-->

<div class="hideinput">
  <input type="text" id="countValue">
</div>

【问题讨论】:

  • 我真的不明白你想要达到什么目的。举例说明它的外观。
  • 基本上,此时计数器正在呈现为单个字符串。我需要将它更改为一个数组,这样我就可以用一个 html 标签(span 或 div)将每个数字括起来,这样每个数字都可以单独设置样式。
  • 请举例说明它应该是什么样子。
  • 在拆分后用示例更新了 jsfiddle [更新了小提琴] [jsfiddle.net/xpvt214o/553881/]
  • 所以你想计算用户输入了多少时间?

标签: javascript jquery html counter


【解决方案1】:

这是一个没有setTimeouts和localStorage的简化版本。

每个数字将变为spanclass="digit-1/2/3/etc"

const toHtml = value => value
    .split('')
    .map((x, i) => `<span class="digit-${i}">${x}</span>`)
    .join('')

$('#input').on('input', function() {
  $('#root').html(toHtml(this.value))
  localStorage.setItem('count', this.value)
})

$('#input').val(localStorage.getItem('count') || '')
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<input id="input" />
<div id="root"></div>

我敢肯定,您可以选择、自定义并应用到您自己的示例中。

更新:用 CSS 类替换颜色
更新:添加 localStorage 用法,注意这里不允许使用 localStorage ,可以找到一个工作示例here

【讨论】:

  • 谢谢@amankkg,虽然不是我想要的,但会相应地适应。
  • 此代码回答了标题问题,但我可以根据您的需要对其进行更新
  • 我的意思的字符串是例如一堆像“123456”这样的数字,并将它们分成 1 2 等等,而在同时存储到本地存储,因此当页面刷新时调用最后一个计数,而不是从 0 重置。样式将来自 css。 Rgds 说
  • 上面的代码实际上是把像“12345”这样的字符串拆分成&lt;span class="digit-1"&gt;1&lt;/span&gt;&lt;span class="digit-2"&gt;2&lt;/span&gt;...localStorage的用法很简单,我可以添加它
  • 嘿@Said,我用localStorage的用法更新了代码,你可以在这里查看jsbin.com/buserofepe/edit?html,js,output,希望对你有帮助
猜你喜欢
  • 2023-01-15
  • 2011-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多