时间:2016-08-25 09:13:59

标签: javascript jquery arrays json

我正在尝试使用.item中的值替换array中的所有标题。这是数组:

var itCats = ['one', 'two', 'three', 'four'];

和html:

<div class="item it1">
    <p>title 1</p>
</div>
<div class="item it2">
    <p>title 2</p>
</div>
<div class="item it3">
    <p>title 3</p>
</div>
<div class="item it4">
    <p>title 4</p>
</div>

尝试了这个,但我发现了脚本错误并且浏览器已关闭。

for (var i = itCats.length; i--;) {
    //arr[i] = '#' + arr[i];
    for (var i = 0; i < $(".item").length; i++) {
        $(".item p').html('itCats[i]);
    }
}

6 个答案:

答案 0 :(得分:2)

其中一个错误在于:

$(".item p').html('itCats[i]);

你搞乱了引号,应该如下:

$('.item p').html(itCats[i]);

答案 1 :(得分:1)

代码中的各种错误

  1. 选择器字符串以"开头,以'结尾,使其正确为".item p"'.item p'
  2. $(".item p")选择使用 eq(i) 的所有元素来使用索引获取特定元素。
  3. 此处不需要嵌套循环。
  4. 删除 html() 方法中不必要的'
  5. &#13;
    &#13;
    var itCats = ['one', 'two', 'three', 'four'];
    
    for (var i = itCats.length; i--;) {
      $(".item p").eq(i).html(itCats[i]);
    }
    &#13;
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="item it1">
      <p>title 1</p>
    </div>
    <div class="item it2">
      <p>title 2</p>
    </div>
    <div class="item it3">
      <p>title 3</p>
    </div>
    <div class="item it4">
      <p>title 4</p>
    </div>
    &#13;
    &#13;
    &#13;

    您可以使用 html() 使用内部遍历元素的回调更简单。

    &#13;
    &#13;
    var itCats = ['one', 'two', 'three', 'four'];
    
    $('div.item p').html(function(i) {
      return itCats[i];
    })
    &#13;
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="item it1">
      <p>title 1</p>
    </div>
    <div class="item it2">
      <p>title 2</p>
    </div>
    <div class="item it3">
      <p>title 3</p>
    </div>
    <div class="item it4">
      <p>title 4</p>
    </div>
    &#13;
    &#13;
    &#13;

答案 2 :(得分:1)

您可以使用一个each()循环

执行此操作

&#13;
&#13;
var itCats = ['one', 'two', 'three', 'four'];

$('.item').each(function(i) {
  $(this).find('p').text(itCats[i])
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="item it1">
  <p>title 1</p>
</div>
<div class="item it2">
  <p>title 2</p>
</div>
<div class="item it3">
  <p>title 3</p>
</div>
<div class="item it4">
  <p>title 4</p>
</div>
&#13;
&#13;
&#13;

答案 3 :(得分:1)

您可以使用.text()回调函数来访问元素索引并从数组返回所需的值以设置为新文本:

$('.item p').text(function(i){
  return itCats[i];
})

&#13;
&#13;
var itCats = ['one', 'two', 'three', 'four'];
$('.item p').text(function(i){
  return itCats[i];
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="item it1">
    <p>title 1</p>
</div>
<div class="item it2">
    <p>title 2</p>
</div>
<div class="item it3">
    <p>title 3</p>
</div>
<div class="item it4">
    <p>title 4</p>
</div>
&#13;
&#13;
&#13;

答案 4 :(得分:1)

你搞砸了几声。结果最简单的解决方案是each循环,并通过回调使用index

$('.item p').each(function(index) {
    $(this).text(itCats[index]);
});

&#13;
&#13;
var itCats = ['one', 'two', 'three', 'four'];

$('.item p').each(function(index) {
    $(this).text(itCats[index]);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="item it1">
    <p>title 1</p>
</div>
<div class="item it2">
    <p>title 2</p>
</div>
<div class="item it3">
    <p>title 3</p>
</div>
<div class="item it4">
    <p>title 4</p>
</div>
&#13;
&#13;
&#13;

您甚至可以使用texthtml

的回调
$('.item p').text(function(index) {
    return itCats[index];
});

&#13;
&#13;
var itCats = ['one', 'two', 'three', 'four'];

$('.item p').text(function(index) {
    return itCats[index];
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="item it1">
    <p>title 1</p>
</div>
<div class="item it2">
    <p>title 2</p>
</div>
<div class="item it3">
    <p>title 3</p>
</div>
<div class="item it4">
    <p>title 4</p>
</div>
&#13;
&#13;
&#13;

或者显示另一种解决方案,如箭头功能:

$('.item p').text(i => itCats[i]);

&#13;
&#13;
var itCats = ['one', 'two', 'three', 'four'];
$('.item p').text(i => itCats[i]);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="item it1">
    <p>title 1</p>
</div>
<div class="item it2">
    <p>title 2</p>
</div>
<div class="item it3">
    <p>title 3</p>
</div>
<div class="item it4">
    <p>title 4</p>
</div>
&#13;
&#13;
&#13;

答案 5 :(得分:-2)

你可能有一些关于单引号的错字&amp;行def antisymmetric(A): for i in range(3): for j in range(3): if A[i][j] != -A[j][i]: return False return True

中的双引号

您可以利用jQuery $(".item p').html('itCats[i]);来获取元素索引

试试这个例子:https://jsfiddle.net/157xr3p9/