我不明白jQuery .each()和.html()方法是如何工作的

Tim*_*ppa 4 javascript jquery

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

http://jsfiddle.net/timosergio/30ydu4oe/

下面是我的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);

        });


    };
Run Code Online (Sandbox Code Playgroud)

Utk*_*nos 5

这是因为你生成一个随机值,然后使用每个tds,而不是为每个s生成一个新的td.所以:

$td.each(function(i){
    $td.eq(i).text(Math.random(Math.random() * 100));
});
Run Code Online (Sandbox Code Playgroud)

换句话说,在循环内部生成随机值,而不是在循环之外.

此外,理解在each回调内部,上下文,即this指向正在考虑的元素.所以你不需要

$td.eq(i).text(...
Run Code Online (Sandbox Code Playgroud)

但仅仅是

$(this).text(...
Run Code Online (Sandbox Code Playgroud)