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にあまり詳しくないので、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 ヘルパー ライブラリを使用しなければ。

querySelector は IE7 以下ではサポートされていませんが、トラフィックのかなりの部分を占めています 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 に答える