Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环通过一组ID并复制它们_Javascript_Jquery - Fatal编程技术网

Javascript 循环通过一组ID并复制它们

Javascript 循环通过一组ID并复制它们,javascript,jquery,Javascript,Jquery,我有一个无序列表,ID如下: <li id="e1">01</li> <li id="e2">02</li> <li id="e3">03</li> <li id="e4" class="event_day">04</li> <li id="e5" class="event_day">05</li> 但正如您可能知道的,它不会循环,而是获取第一个id并将其分配给所有div,从

我有一个无序列表,ID如下:

<li id="e1">01</li>
<li id="e2">02</li>
<li id="e3">03</li>
<li id="e4" class="event_day">04</li>
<li id="e5" class="event_day">05</li>
但正如您可能知道的,它不会循环,而是获取第一个id并将其分配给所有div,从而产生:

<div id="e4d"></div>
<div id="e4d"></div>


如果你能解释一下逻辑上的缺陷,甚至可以给我一个链接,我会非常感激,因为我可以通过阅读来提高我的技能。我在看,但没有意义。谢谢你的阅读

收集事件日的所有ID,然后根据需要使用所需ID动态创建div可能会更容易

$("li.event_day").each(function() {
    $("#descriptions").append(
        $("<div>").attr("id", $(this).attr("id") + "d")
    );
});
$(“li.event\u day”)。每个(函数(){
$(“#说明”)。追加(
$(“”).attr(“id”),$(this.attr(“id”)+“d”)
);
});

收集事件日的所有ID,然后根据需要使用所需的ID动态创建div可能会更容易

$("li.event_day").each(function() {
    $("#descriptions").append(
        $("<div>").attr("id", $(this).attr("id") + "d")
    );
});
$(“li.event\u day”)。每个(函数(){
$(“#说明”)。追加(
$(“”).attr(“id”),$(this.attr(“id”)+“d”)
);
});

能否在呈现HTML之前确定需要什么,然后相应地绘制列表和div

<?php
$event_days = array(4,5);

$list = '<ol>';
$divs = '';

for($i=1;$i<30;$i++)
{
    // built the list
    $list .= '<li id="e'.$i.'" ';
    if(in_array($i, $event_days))
    {
        $list .= 'class="event_day"';
    }
    $list .= '>Day '.$i.'</li>';

    // build the divs
    if(in_array($i, $event_day)
    {
        $divs .= '<div id="e'.$i.'d"></div>';
    }
}
$list .= '</ol>';

echo $list;
echo $divs;

?>

能否在呈现HTML之前确定需要什么,然后相应地绘制列表和div

<?php
$event_days = array(4,5);

$list = '<ol>';
$divs = '';

for($i=1;$i<30;$i++)
{
    // built the list
    $list .= '<li id="e'.$i.'" ';
    if(in_array($i, $event_days))
    {
        $list .= 'class="event_day"';
    }
    $list .= '>Day '.$i.'</li>';

    // build the divs
    if(in_array($i, $event_day)
    {
        $divs .= '<div id="e'.$i.'d"></div>';
    }
}
$list .= '</ol>';

echo $list;
echo $divs;

?>

jquery中的each函数还将索引参数传递给回调函数。 前提是描述中的div数量与类event_day中的div数量相同:

$("#descriptions>div").each(function(n) {
      $(this).attr("id", $(".event_day").eq(n).attr("id") + "d");
});
.eq(n)返回jquery结果集中位置n处的元素

不过,您的查询可能会更有效率,因为现在您可以遍历描述中每个div的dom。更好的(imho)是:

var event_days = $("#listIdentifier .event_day");
$("#descriptions>div").each(function(n) {
      $(this).attr("id", event_days.eq(n).attr("id") + "d");
});

jquery中的each函数还将一个索引参数传递给回调函数。 前提是描述中的div数量与类event_day中的div数量相同:

$("#descriptions>div").each(function(n) {
      $(this).attr("id", $(".event_day").eq(n).attr("id") + "d");
});
.eq(n)返回jquery结果集中位置n处的元素

不过,您的查询可能会更有效率,因为现在您可以遍历描述中每个div的dom。更好的(imho)是:

var event_days = $("#listIdentifier .event_day");
$("#descriptions>div").each(function(n) {
      $(this).attr("id", event_days.eq(n).attr("id") + "d");
});

您的逻辑中的缺陷是,您只匹配第一个元素,即e4

因此,只需创建一个数组并添加与类事件日匹配的ID即可:

$("#descriptions>div").each(function(n) {
      $(this).attr("id", $(".event_day").eq(n).attr("id") + "d");
});
然后在description div中循环遍历div,并按如下方式设置它们的ID:

var count = 0;
$("#descriptions>div").each(function() {
      $(this).attr("id", myIds[count]);
      count = count + 1;
});

您的逻辑中的缺陷是,您只匹配第一个元素,即e4

因此,只需创建一个数组并添加与类事件日匹配的ID即可:

$("#descriptions>div").each(function(n) {
      $(this).attr("id", $(".event_day").eq(n).attr("id") + "d");
});
然后在description div中循环遍历div,并按如下方式设置它们的ID:

var count = 0;
$("#descriptions>div").each(function() {
      $(this).attr("id", myIds[count]);
      count = count + 1;
});

这很有效,但我认为Les的解决方案可能更有效。不过,感谢您的输入,其他问题的参考资料也很好:)这很有效,但我认为Les的解决方案可能更有效。不过,感谢您的输入,对于其他问题,这是一个很好的参考:)