使用循环将数组值赋给元素

时间:2015-04-18 09:57:47

标签: javascript jquery arrays

如何给{,1}} a,b,c的值?目前我的下面的代码我得到了所有c。

li

我的代码出了什么问题?

5 个答案:

答案 0 :(得分:3)

这是因为当迭代数组并设置值时,您正在迭代所有li。 jquery .text()接受函数作为参数,接受索引作为参数。这将消除迭代li和数组元素的需要:

var arr = ['a','b','c'];    
$('li').text(function(i){
  return arr[i];
});

<强> Working Demo

答案 1 :(得分:3)

首先,您将所有li的文字设置为'a',然后设置为'b',最后设置为'c'

相反,您可以尝试迭代li元素,并将当前元素的文本内容设置为arr中的相应项:

var arr = ['a','b','c'];
$('li').each(function(i) {
    $(this).text(arr[i]);
});

var arr = ['a','b','c'];
$('li').each(function(i) {
    $(this).text(arr[i]);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul>
  <li></li>
  <li></li>
  <li></li>
</ul>

或者(但类似地),您可以迭代数组,并将相应li的文本内容设置为当前值:

var arr = ['a','b','c'],
    $li = $('li');
arr.forEach(function(txt, i) {
  $li.eq(i).text(txt);
});

var arr = ['a','b','c'],
    $li = $('li');
arr.forEach(function(txt, i) {
  $li.eq(i).text(txt);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul>
  <li></li>
  <li></li>
  <li></li>
</ul>

答案 2 :(得分:3)

您应该按arr而不是所有li元素进行迭代,您可以这样做:

arr = ['a','b','c'];
$.each(arr, function(i,v){
    $('li').eq(i).text(v);
});

这样,您将分配与li文本完全相同的数量,因为数组中有元素。

答案 3 :(得分:0)

在您的代码中,每次外部迭代器执行时,所有<li>都会使用迭代结果发送短信。因此,您将获得所有&#39;

要做得对,你应该像这样编码:

arr = ['a','b','c'];
$('li').each(function(index) {
    $(this).text(arr[index]);
});

答案 4 :(得分:0)

jQuery each()函数将传入索引,您可以使用

arr = ['a','b','c'];

$('li').each(function(i) {
    $(this).text(arr[i]);
});