1

我只是想知道是否可以在不使用 JQuery 的情况下在 javascript 中一次获取多个 id。我正在检查动态创建的表格中每个单元格的背景颜色。例如,我有这个代码:

var black = "rgb(0, 0, 0)";
if(document.getElementById("cell1").style.backgroundColor == black &&
   document.getElementById("cell2").style.backgroundColor == black)
{
  alert("Two cells are black!");
}

有没有可能做这样的事情:

var black = "rgb(0, 0, 0)";
if(document.getElementById("cell1","cell2").style.backgroundColor == black)
{
  alert("Two cells are black!");
}

我试图完全不使用 JQuery,因为我不太熟悉它。

4

4 回答 4

1

querySelectorAll使用现代浏览器,您可以使用(兼容性矩阵)做类似的事情,但您仍然需要遍历结果NodeList

var nodes = document.querySelectorAll("#cell1, #cell2");
var count = 0;
for (var index = 0; index < nodes.length; ++index) {
    if (nodes[index].style.backgroundColor == black) {
        ++count;
     }
}
if (nodes.length === count) {
    alert("Both are black");
}

真的不会给你买任何东西,说:

var cells = ["cell1", "cell2"];
var count = 0;
for (var index = 0; index < cells.length; ++index) {
    if (document.getElementById(cells[index]).style.backgroundColor == black) {
        ++count;
    }
}
if (cells.length === count) {
    alert("All cells are black");
}

简而言之:不,没有什么比你能做的更有用的了。

于 2013-02-10T17:20:17.983 回答
1

不,不使用 jQuery 或其他 javascript 帮助程序库。

IE7 及以下不支持 querySelector 仍然占流量的相当大比例http://caniuse.com/#feat=queryselector

于 2013-02-10T17:20:28.983 回答
1

不是原生的。不过,您可以相当轻松地编写自己的代码:

function getElementsById(elements)
{
    var to_return = [ ];
    for(var i = 0; i < elements.length; i++)
    {
        to_return.push(document.getElementById(elements[i]));
    }
    return to_return;
}

这将接受一个 ID 数组作为参数,并返回数组中的元素。您可能还想研究该document.querySelector方法。

于 2013-02-10T17:21:01.080 回答
0

我赞成@BenM 的回答,但我想建议另一种选择。

你的问题:

我正在检查每个单元格的背景颜色

在这种情况下,将 id 附加到表本身会更有意义。您的选择器变为(假设没有嵌套表):

var cells = document.getElementById("myTable").getElementsByTagName("td");

或对于最近的浏览器:

var cells = querySelectorAll("#myTable>tbody>tr>td");

作为记录,如果您的所有单元格都具有相似的 id “cellxxx”,这是另一种方式:

var cells = querySelectorAll("td[id^='cell']");
于 2013-02-10T17:43:27.757 回答