【问题标题】:insert random numbers into a class在类中插入随机数
【发布时间】:2012-07-21 03:54:20
【问题描述】:

如果我这样做:

$('.classname').html(Math.floor(Math.random()*10)+1);

所有“类名”都用相同的数字填充。 是否可以用不同的随机数填充“类名”的每个实例?

我能想到解决这个问题的唯一可能方法是遍历“类名”的每个实例并一个一个地应用一个随机数。

【问题讨论】:

    标签: javascript jquery random


    【解决方案1】:

    .html()

    $(".classname").html(function(idx, oldValue) {
        return (Math.floor(Math.random()*10)+1);
    });
    

    fiddle

    【讨论】:

      【解决方案2】:

      html 方法有一个接受函数的“重载”。该函数应返回将内部 html 设置为的值。在你的情况下,你可以这样做:

      $(".classname").html(function() {
          return (Math.floor(Math.random()*10)+1);
      });
      

      该函数实际上是用两个参数调用的。第一个是选择中元素的索引,第二个是元素内部html的当前值

      【讨论】:

        【解决方案3】:

        您可以使用 jQuery 的 .each() 函数来遍历与您提供的选择器匹配的每个元素 -

        $.each('.classname',function(index,elem){
          var newRandomNumber = (Math.random()*10)+1;
          $(elem).html(Math.floor(newRandomNumber));
        });
        

        对于each() 函数的每次迭代,您将在elem 参数中获得您所在元素的index 和元素本身。


        http://api.jquery.com/jQuery.each/

        【讨论】:

        • gah... 尴尬 :P 谢谢@rune!
        • 你可以用this代替$(elem)
        • 我总是喜欢尽可能详细以提高可读性 - each function 定义了索引和值参数,所以我喜欢使用提供的内容:)
        • 不利的一面是您有一个不需要的选择。我同意可读性很重要,但我也相信在这里使用它是惯用的,因此您可以获得可读性(如果读者精通 jQuery)和速度
        【解决方案4】:

        试试这个

        $('.classname').each(function(index) {
            $(this).html(Math.floor(Math.random()*10)+1);
        });
        

        【讨论】:

          【解决方案5】:

          是的。最简单的方法是使用 jQuery each 函数:

          $('.classname').each(function() {
              $(this).html(Math.floor(Math.random()*10)+1);
          });
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-02-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-04-13
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多