当前位置: 首页 > 知识库问答 >
问题:

JS循环内循环

谷涵容
2023-03-14

您好,我对jquery没有什么问题。首先,我有:

大众BORA 1.9TDI 1990 1995
奥迪A3 2.0TFSI 2006 2008

但我想实现:

VW BORA 1.9TDI 1990
VW BORA 1.9TDI 1991
VW BORA 1.9TDI 1992
VW BORA 1.9TDI 1993
VW BORA 1.9TDI 1994
VW BORA 1.9TDI 1995
Audi A3 2.0TFSI 2006
Audi A3 2.0TFSI 2007
Audi A3 2.0TFSI 2008

HTML代码:

<div class="make">
   <div class="name">VW BORA 1.9TDI</div><div class="start">1990</div><div class="end">1995</div>
</div>
<div class="make">
   <div class="name">Audi A3 2.0TFSI</div><div class="start">2006</div><div class="end">2008</div>
</div>

JS代码:

$('div[class="make"]').each(function(index){
   var html = '';
   var start = $('.start').text();
   var end = $('.end').text();
   var name = $('.name').text();

   for (i=start; i<=end; i++) {
     html += '<div class="'+i+'">'+name+' '+i+'</div>';
   }
   $("#content").html(html)
});

如果有课的话。用一个内容制作就可以了,但如果上课的话。make多次出现在不同的内容中,所有内容都放在一起,但应该分开。

这样地:

VW BORA 1.9TDIAudi A3 2.0TFSI 19902006
VW BORA 1.9TDIAudi A3 2.0TFSI 19902007
VW BORA 1.9TDIAudi A3 2.0TFSI 19902008
VW BORA 1.9TDIAudi A3 2.0TFSI 19902009

共有3个答案

叶智
2023-03-14

首先,您希望在当前活动的中查找元素,但需要进行全局查找。要仅在当前范围内搜索,请执行以下操作:

var start = $(this).children('.start').text(); // same for .end/.name

您还需要将通过text()检索到的值显式转换为如下数字:

for (var i = Number(start); i <= Number(end); i++) {
    // do stuff
}

此外,定义您迭代的变量而不仅仅是使用它们通常是一种很好的做法。

jQuery提供了一些非常好的实用程序来处理DOM元素,因此您不必使用字符串-如下所示:

var $div = $("<div>").text(name).addClass(i);
$("#content").append($div);
巫马善
2023-03-14

您无法确定jQuery必须在哪里查找其他元素,因此它会抓取所有元素。只需让他在父上下文中搜索startendname

并使用html()而不是text()来仅获取元素内容。

$('div[class="make"]').each(function(index){
    var parent = $(this),
        html = links = '',
        start = $('.start', parent).html(),
        end = $('.end', parent).html(),
        name = $('.name', parent).html();

    for( var i = start; i <= end; i++ ) {
        html += '<div class="' + i + '">' + name + ' ' + i + '</div>';
    }

    $("#content").html(html)
});

这应该行得通。

谷梁宝
2023-03-14

这对您很有用:请注意,$(“.class”)始终返回一个数组,因此在您的情况下,应该使用索引值逐个访问。

$('div[class="make"]').each(function(index){
  
   var html = '';
   var links = '';
   var start = parseInt($(this).find(".start").text());
   var end = parseInt($(this).find(".end").text());
   var name = $(this).find(".name").text();
   
   for (i=start; i<=end; i++) {
       html += '<div class="'+i+'">'+name+' '+i+'</div>';
   }
   $("#content").append(html)
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="make">
   <div class="name">VW BORA 1.9TDI</div><div class="start">1990</div><div class="end">1995</div>
</div>
<div class="make">
   <div class="name">Audi A3 2.0TFSI</div><div class="start">2006</div><div class="end">2008</div>
</div>
<br><br>
<div id="content"></div>
 类似资料:
  • 我试图在for循环中获得for循环,因此输出如下: 我希望输出显示一个正方形 我不知道它为什么不这样做。下面是我的代码:

  • 我这里有个情况。我有一个promise函数,它以这种方式运行 > 我的promise函数get问题调用另一个promise函数DB.查询,它从mysqlite数据库获取结果(Main_Question)。 当我得到DB查询的结果后,我调用get答案函数,它也是一个获取该问题答案的promise函数 现在主问题可能有N个子问题。所以我再次运行DB。获取所有子问题的查询。 现在,我必须找到这些问题的答

  • 我的问题是,我试图在一个数组上迭代多次,但是,我的for循环只会在该数组上迭代一次(或者在我看来是这样),这会导致结果错误。 我试图在这个数组上循环:

  • 本文向大家介绍理解JS事件循环,包括了理解JS事件循环的使用技巧和注意事项,需要的朋友参考一下 伴随着JavaScript这种web浏览器脚本语言的普及,对它的事件驱动交互模型,以及它与Ruby、Python和Java中常见的请求-响应模型的区别有一个基本了解,对您是有益的。在这篇文章中,我将解释一些JavaScript并发模型的核心概念,包括其事件循环和消息队列,希望能够提升你对一种语言的理解,

  • 问题内容: 为什么以下工作正常? 但是据说这是危险的/不正确的: 是否需要在循环外声明变量? 问题答案: 局部变量的范围应始终尽可能小。 在你的例子我相信是不会使用的外while循环,否则你就不会问这个问题,因为它声明的内部while循环不会是一个选项,因为它不会编译。 所以,既然是不使用外循环,在尽可能小的范围是内 while循环。 所以,答案是着重那绝对应该被while循环内声明。没有,没有,

  • 问题内容: 我第一次不了解PHP。我一直在脚本中使用for循环,while循环,foreach循环。我想知道 哪一个性能更好? 选择循环的标准是什么? 当我们在另一个循环中循环时应该使用哪个? 我一直想知道要使用哪个循环的代码。 很明显,我可以使用while编写上面的代码。希望有人能帮助我找出哪个循环更适合使用。 问题答案: 哪一个性能更好? 没关系 选择循环的标准是什么? 如果只需要遍历对象或数