0

假设我有 50 个 div ID

<div id="div1"></div>
<div id="div2"></div>
<div id="div3"></div>
<div id="div4"></div>    and ... upto     <div id="div50"></div>

这些 div 是具有足够宽度 x 高度来填充背景颜色的框。

还有另一个 div 以字符串形式检索数据库数据。它正在被正则表达式编辑以匹配 div ID 并适合 jQuery 选择器

<div id="bookcaldatesci"></div>

上面 div 中的字符串 (innerHTML) 声明了一组 div。因此字符串 (innerHTML) 可能如下所示:

#div1,#div2,#div3,#div1

如果该 div 被多次引用,我想更改该 div 的颜色。所以div1的颜色会改变。

问题是 jquery.each() 忽略了 each() 上的第二个 div1

我目前的代码是

$(bookcaldatesci.innerHTML).each(function(i){
    var indicator1 = $(this).css('background-color');
    if (indicator1 == 'rgb(0, 0, 255)') {
        $(this).css({ 'background-color': 'rgb(255, 165, 0)' });
    }
    else if (indicator1 != 'rgb(255, 165, 0)') {
        $(this).css({ 'background-color': 'rgb(0, 0, 255)';
    }
});

总之,如果 div1 已经是蓝色,则将其设为橙色作为警告。如果它不是蓝色的,就让它变成蓝色。

我查明了问题 - 我设法为 .each() 的结果返回了一个字符串,然后了解到第二个 div1 在通过 .each() 时丢失了我正在寻找一种避免这种情况的方法。所以 jQuery 忽略了我的第二个 #div1 并且他运行 .each() 命令为

#div1,#div2,#div3

删除最后一个 div1。这是我通过 .each() 测试时返回的字符串。

我有什么办法不放弃最后一个 div1?

编辑-问题:第一次迭代已经运行,为什么要运行第二次迭代?

答:如果存在,我也需要它来运行第二次迭代。因此,如果有第二次迭代,我需要它来改变颜色(所以它会警告我)。这个字符串来自一个关于预订的自动化数据库。如果有重叠,应警告管理员。我使用正则表达式构建了字符串,因此该字符串与 id 列表相同,因此我可以在 jQuery 选择器中获取它。

4

3 回答 3

0

通过不同的方法回答(Javascript)

function find_duplicates(arr) {
var len=arr.length,
  out=[],
  counts={};

for (var i=0;i<len;i++) {
var item = arr[i];
var count = counts[item];
counts[item] = counts[item] >= 1 ? counts[item] + 1 : 1;
}

for (var item in counts) {
if(counts[item] > 1)
  out.push(item);
}

alert(out);
}

find_duplicates(bookcaldatesci.innerHTML.split(","));

将alert发送到jQuery选择器,可以获得想要的结果。

于 2013-11-03T07:28:31.093 回答
0

乍一看,您似乎有一个错字:

$(bookcaldatesci.innerHTML).each(function(i){
    var indicator1 = $(this).css('background-color');
    if (indicator1 == 'rgb(0, 0, 255)') {
        $(this).css({ 'background-color': 'rgb(255, 165, 0)' });
    }
    else if (indicator1 != 'rgb(255, 165, 0)') {
        $(this).css({ 'background-color': 'rgb(0, 0, 255)';
    }
});

再看看你的第二个测试:“如果它不是橙色,就让它变成蓝色”

于 2013-11-03T07:38:26.580 回答
-1

页面中每个元素的 ID 必须是唯一的。因此,您不能在两个不同的 div 上使用相同的 Id。这就是导致您的问题的原因。如果出于某种原因你想用相同的 id 对它们进行分组,我建议你使用一个类。

于 2013-11-02T20:40:11.257 回答