Javascript 我不知道';我不理解jQuery.each()和.html()方法是如何工作的
我是蒂莫。我是网络编程新手,我有这个问题。我制作了一个包含3行的简单html表格。每个td必须有一个随机数值。我的问题是,我的代码在每个td元素上都有相同的值 下面是我的js代码:Javascript 我不知道';我不理解jQuery.each()和.html()方法是如何工作的,javascript,jquery,Javascript,Jquery,我是蒂莫。我是网络编程新手,我有这个问题。我制作了一个包含3行的简单html表格。每个td必须有一个随机数值。我的问题是,我的代码在每个td元素上都有相同的值 下面是我的js代码: $(function() { randomValues(); //alert(1); }); var randomValues = function(){ var $td = $('.table').fin
$(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不客气。如果你认为答案已经解决了你的问题,请接受。我明白了。非常感谢你!