[解決済み] getElementsByClassNameが動作しない [重複].
2022-01-26 21:47:35
質問
私は、mysqlデータベースからの情報をテーブルに整然と表示するPHPページをコーディングしました。onLoadイベントハンドラで、空のテーブル行を隠したいのですが。
を非表示にするコードを含むサンプルテーブルです。
<td>
しかし、私はそれが異なるIDで動作させることができます。
<script type="text/javascript">
function hideTd(id){
if(document.getElementById(id).textContent == ''){
document.getElementById(id).style.display = 'none';
}
}
</script>
</head>
<body onload="hideTd('1');hideTd('2');hideTd('3');">
<table border="1">
<tr>
<td id="1">not empty</td>
</tr>
<tr>
<td id="2"></td>
</tr>
<tr>
<td id="3"></td>
</tr>
</table>
</body>
のクラスを使いたいのです。
<td>
を使えば同じことができますが、クラスを参照するのは一度だけで、削除したい ID をいちいち参照する必要はありませんし、動的なコンテンツには使えません。このコードを使ってみました。
<script type="text/javascript">
function hideTd(){
if(document.getElementsByClassName().textContent == ''){
document.getElementsByClassName().style.display = 'none';
}
}
</script>
</head>
<body onload="hideTd('1');">
<table border="1">
<tr>
<td class="1">not empty</td>
</tr>
<tr>
<td class="1"></td>
</tr>
<tr>
<td class="1"></td>
</tr>
</table>
</body>
を隠すはずなのですが、うまくいきません。
<td>
指定されたクラスを持つ空の
<td>
はIDではなくクラスを使っているのですか?
どのように解決するのですか?
いくつかの問題があります。
- クラス名(とID)が 数字で始めてはいけない .
-
にクラスを渡す必要があります。
getElementsByClassName()
. - 結果セットを反復する必要があります。
例( 未検証 ):
<script type="text/javascript">
function hideTd(className){
var elements = document.getElementsByClassName(className);
for(var i = 0, length = elements.length; i < length; i++) {
if( elements[i].textContent == ''){
elements[i].style.display = 'none';
}
}
}
</script>
</head>
<body onload="hideTd('td');">
<table border="1">
<tr>
<td class="td">not empty</td>
</tr>
<tr>
<td class="td"></td>
</tr>
<tr>
<td class="td"></td>
</tr>
</table>
</body>
なお
getElementsByClassName()
はIE8までは使用できません
.
更新しました。
あるいは、テーブルにIDを与えて使用することもできます。
var elements = document.getElementById('tableID').getElementsByTagName('td');
をすべて取得するために
td
要素で構成されます。
親行を非表示にするには
parentNode
プロパティを指定します。
elements[i].parentNode.style.display = "none";
関連
-
[解決済み】TypeError: 'undefined'はオブジェクトではありません。
-
[解決済み】webpack: モジュールが見つかりません。Error: 解決できない(相対パスで)
-
[解決済み】getElementByIdはnullを返す?[クローズド]
-
[解決済み】FirefoxでGoogle Maps V3をリモートで使用すると「googleが定義されていません」と表示される。
-
[解決済み】Syntax error: JavaScriptの不正なreturnステートメント
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] 私のJavaScriptコードは "No 'Access-Control-Allow-Origin' header is present on requested resource "というエラーを受け取りますが、Postmanはそうならないのはなぜですか?
-
[解決済み] URLを新しいタブで開く(新しいウィンドウではない)
-
[解決済み] CSS3のborder-radiusプロパティとborder-collapse:collapseが混ざらないのですが。border-radiusを使用して、角を丸くした折りたたみテーブルを作成するにはどうすればよいですか?
-
[解決済み】スクリプトの読み込みと実行順序について
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】node.js TypeError: path must be absolute or specify root to res.sendFile [JSONのパースに失敗しました]。
-
[解決済み】JavaScriptのgetElementByNameが機能しない
-
[解決済み】コンソールがUnterminated JSX contentsエラーを投げる【終了しました
-
[解決済み】getElementByIdはnullを返す?[クローズド]
-
[解決済み】React-Routerの子が1つしかない。
-
[解決済み】FirefoxでGoogle Maps V3をリモートで使用すると「googleが定義されていません」と表示される。
-
[解決済み】'useState' が定義されていない no-undef React
-
[解決済み】Vueが定義されていない
-
[解決済み] CSSのクラス名/セレクタに使用できる文字は?
-
[解決済み] querySelectorAllメソッドとgetElementsBy*メソッドは何を返すのですか?