[解決済み] JavaScriptでGetElementByIdの代わりにgetElementByClassを使用するには?
質問
私は、ウェブサイト上の特定のDIV要素の可視性を、各DIVのクラスに応じて切り替えようとしています。私はそれらをトグルするために基本的なJavaScriptのスニペットを使用しています。問題は、そのスクリプトが
getElementById
として
getElementByClass
はJavaScriptではサポートされていないからです。そして残念ながら、DIVの名前にidではなくclassを使わなければなりません。なぜなら、DIVの名前は特定のカテゴリ名を使用してXSLTスタイルシートによって動的に生成されるからです。
私は、特定のブラウザが現在
getElementByClass
をサポートするようになったのは知っていますが、Internet Explorer はサポートしていないので、そのルートは使いたくありません。
関数を使ってクラスごとに要素を取得するスクリプトを見つけました(このページの#8のようなものです。 http://www.dustindiaz.com/top-ten-javascript/ のように)、しかし、それらを私のトグル・スクリプトと統合する方法がわかりません。
これが HTML コードです。DIV自体はXML/XSLTでページロード時に生成されるため、欠落しています。
主な質問 以下のToggleスクリプトで、IDで要素を取得するのではなく、クラスで要素を取得するにはどうしたらよいでしょうか?
<html>
<head>
<!--This is the TOGGLE script-->
<script type="text/javascript">
<!--
function toggle_visibility(id) {
var e = document.getElementById(id);
if(e.style.display == 'block')
e.style.display = 'none';
else
e.style.display = 'block';
}
//-->
</script>
</head>
<!--the XML/XSLT page contents will be loaded here, with DIVs named by Class separating dozens of li's-->
<a href="#" onclick="toggle_visibility('class1');">Click here to toggle visibility of class 1 objects</a>
<a href="#" onclick="toggle_visibility('class2');">Click here to toggle visibility of class 2 objects</a>
</body>
</html>
どのように解決するのですか?
最近のブラウザは
document.getElementsByClassName
. この機能を提供しているベンダーの完全な内訳は、次のサイトで見ることができます。
caniuse
. 古いブラウザへのサポートを拡張したい場合は、jQuery にあるようなセレクタ エンジンまたはポリフィルを検討するとよいでしょう。
古い回答
次のことを調べてみてください。 jQuery をチェックするとよいでしょう。
$(".classname").hide(); // hides everything with class 'classname'
GoogleはjQueryのソースファイルをホストしているので、それを参照すればすぐに実行することができます。あなたのページには、次のように記述してください。
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$(".classname").hide();
});
</script>
関連
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでメールアドレスを検証するのに最適な方法は何ですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み] フォーム送信のようなJavaScriptのポストリクエスト
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] Chart.jsを使ってドーナツチャートの中にテキストを追加するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] <Enter>でjQuery UIダイアログを送信する
-
[解決済み] なぜJavaScriptでは!{}[true]がtrueに評価されるのですか?
-
[解決済み] Node.jsでbase64エンコードされた画像をAmazon S3へアップロードする
-
[解決済み] bootstrap のポップオーバーがすべての要素の上に表示されない
-
[解決済み] JavaScript のオブジェクトの配列を比較し、最小値/最大値を取得する
-
[解決済み] 各オブジェクトに?重複
-
[解決済み] JavaScript で `throw` の後に `return` をする必要がありますか?
-
[解決済み] JavaScriptのArray.sort()メソッドでシャッフルするのは正しいのか?
-
[解決済み] 変異を伴わないオブジェクトからの値の削除
-
[解決済み] JavaScriptでDIVを表示・非表示にするには?