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);
});
};
答案 0 :(得分:5)
这是因为您生成了一个随机值,然后为每个td
使用该值,而不是为每个td
生成一个新值。所以:
$td.each(function(i){
$td.eq(i).text(Math.random(Math.random() * 100));
});
换句话说,在循环内部生成随机值,而不是在循环内部。
此外,请理解,在each
回调内,上下文(即this
)指向正在考虑的元素。所以你不需要
$td.eq(i).text(...
但仅仅
$(this).text(...
答案 1 :(得分:1)
$.each()
本质上是一个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);
});
}
答案 2 :(得分:0)
这是因为你的随机值是在每个语句之前生成的,所以每次都使用相同的值。
将您的Math.random()* 100移动到.text()中,一切都应该有效。
答案 3 :(得分:0)
此问题与.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);
});
};