-2

すべてのdomを取得できます

document.getElementsByTagName("*")

使えない理由

document.getElementsByClassName("*")

class属性が設定されているすべてのタグを取得するには?

そして同様に使用します

document.getElementById("*")

id属性が設定されたタグを取得するには?

これらの機能はあまり必要ではなく、需要がないかもしれませんが、誰かが同じことを達成する方法を教えてくれることを願っています. ありがとう。

4

4 に答える 4

8

答えは、ワイルドカードを使用getElementsByClassName()getElementById()ないためです。それらはそのように仕様化または作成されていないため、そのように使用することはできません。

さらにgetElementById()、要素の配列ではなく単一のDOM要素のみを返すため、そのようには機能しません。

クラス名を持つすべての要素、または ID を持つすべての要素を取得したい場合は、次のように実行できます。

function getAllElementsWithAttribute(attr) {
    var results = [];
    var all = document.getElementsByTagName("*");
    for (var i = 0, len = all.length; i < len; i++) {
        if (all[i][attr]) {
            results.push(all[i]);
        }
    }
    return(results);
}

次に、これを使用してクラス名を持つすべての要素を取得できます。

var items = getAllElementsWithAttribute("className");

または、次の ID を持つすべての要素を取得します。

var items = getAllElementsWithAttribute("id");
于 2012-08-15T16:08:47.033 に答える
0

@jfriend00 が以前の回答で示唆したように、機能は JavaScript のブラウザー実装にネイティブには存在しません。繰り返しますが、答えには、純粋なjavascriptを使用してそれを行う方法も含まれています。

または、代わりにフレームワークを使用する必要があります。これは、javascript の上にあり、たとえば、より優れたセレクターを提供します。

したがって、そのようなフレームワークの 1 つであるjQueryを考慮すると、次のことができます。

ですべての要素を選択class:

$('[class]')

ですべての要素を選択id:

$('[id]')
于 2012-08-15T16:13:18.757 に答える
0

getElementsByClassName()すべてのブラウザ、特に Internet Explorer に実装されているわけではありません。ただし、 jQueryなどのさまざまな JavaScript ライブラリを使用して、クロス ブラウザーでこの機能を実現できます。*すべての値を取得するためにワイルドカードを使用するデフォルト関数はありません。$('[id]')ただし、この SO 投稿に見られるように、 jquery を使用してそうすることができます: jquery get only all html elements with ids

于 2012-08-15T16:13:46.153 に答える
-1

getElementByClass のクイック リンクは次のとおりです if ステートメントを次のように変更することにより、クラス

if (allHTMLTags[i].className!="") {

ID を持つすべての要素を取得するには、すべての要素を取得し、ID のない要素を破棄します。

于 2012-08-15T16:10:26.143 に答える