Javascript 我不知道';我不理解jQuery.each()和.html()方法是如何工作的

Javascript 我不知道';我不理解jQuery.each()和.html()方法是如何工作的,javascript,jquery,Javascript,Jquery,我是蒂莫。我是网络编程新手,我有这个问题。我制作了一个包含3行的简单html表格。每个td必须有一个随机数值。我的问题是,我的代码在每个td元素上都有相同的值 下面是我的js代码: $(function() { randomValues(); //alert(1); }); var randomValues = function(){ var $td = $('.table').fin

我是蒂莫。我是网络编程新手,我有这个问题。我制作了一个包含3行的简单html表格。每个td必须有一个随机数值。我的问题是,我的代码在每个td元素上都有相同的值

下面是我的js代码:

        $(function() {

            randomValues();
            //alert(1);
        });


    var randomValues = function(){
        var $td = $('.table').find('td');

        // each td has to have a different random value

        var random_values = Math.random() * 100 ;

        $td.each(function(i){

            //console.log(i + ":" + Math.random() * 100);

            $td.eq(i).text(random_values);

        });


    };

这是因为您正在生成一个随机值,然后对每个
td
s使用该值,而不是为每个
td
生成一个新值。因此:

$td.each(function(i){
    $td.eq(i).text(Math.random(Math.random() * 100));
});
换句话说,在循环内部而不是外部生成随机值

此外,请理解,在
每个
回调中,上下文(即
)指向正在考虑的元素。所以你不需要

$td.eq(i).text(...
但仅仅

$(this).text(...

这是因为您的随机值是在每条语句之前生成的,所以每次都使用相同的值


将您的Math.random()*100移到.text()中,所有操作都应该正常。

问题与
.each()
.html()
无关。您只生成了一次随机值,并为每个td设置了相同的值。你需要这样做

var randomValues = function(){
        var $td = $('.table').find('td');

        // each td has to have a different random value

       // var random_values = Math.random() * 100 ;

        $td.each(function(i){

            //console.log(i + ":" + Math.random() * 100);

            $td.eq(i).text(Math.random() * 100);

        });


    };
本质上是一个foreach循环。您需要在每次迭代中创建一个新的随机值

像这样:

var randomValues = function() {
  var $td = $('.table').find('td');

  // each td has to have a different random value
  $td.each(function(i){
    //console.log(i + ":" + Math.random() * 100);

    var random_value = Math.random() * 100 ;

    $td.eq(i).text(random_value);

  });
}

不要太直截了当非常感谢@Utkanos不客气。如果你认为答案已经解决了你的问题,请接受。我明白了。非常感谢你!