getElementsByClassName()メンバーが 1 つしかない場合でも、常に nodeList オブジェクトを提供します。NodeList オブジェクトにはプロパティがないため、コードでさらに行ったのと同じように、最初styleに反復して可視性を確認する必要があります。elemsif
メンバーが 1 つしかないことが確実な場合は、 を使用してその可視性を確認できますelems[0].style.visibility。
特定の要素の可視性を確認したい場合は、 を指定して、idを使用してその要素を取得できますdocument.getElementById()。
編集
フィドルをありがとう、今、いくつかの結果を得ることができます。
そのため、明示的に割り当てられていない場合、idを取得しようとすると実際の問題が発生します。styleこれに取り組むには、次を使用する必要がありますgetComputedStyle()。
function CheckavailOnload() {
var elems = document.getElementsByClassName('box-collateral box-related');
for (var i = 0; i < elems.length; i++) {
if (getComputedStyle(elems[i]).visibility == 'visible' || getComputedStyle(elems[i]).display == 'block') {
alert("hello");
var av = document.getElementsByClassName('availability in-stock');
for (var j = 0; j < av.length; j++) {
av[j].style.visibility = 'visible';
}
}
else if (getComputedStyle(elems[i]).visibility == 'hidden' || getComputedStyle(elems[i]).display == 'none') {
var av = document.getElementsByClassName('availability in-stock');
for (var k = 0; k < av.length; k++) {
av[k].style.visibility = 'hidden';
}
}
}
}
window.onload = CheckavailOnload;
このコードは、クラスに割り当てられたすべての要素をチェックしますbox-collateral box-related。jsFiddleで動作するデモ。
の使用にも注意window.onloadしてください。これにより、要素が解析される前に要素を取得しようとしていないことが確認されます。とに異なる数の要素がある場合、正しく動作するはずの in と-ループに切り替えelemsました。avfor...jfor...kelemsav
メンテナンスされたクラスを持つ最初に見つかった要素がチェック対象の要素である場合は、すべての式iで単純に置き換えることができます。0elems[i]
特定の要素だけをチェックしたい場合は、 を指定してid、 で参照を取得できますgetElementById()。HTML の場合:
<div id="checkThisOnly" class="box-collateral box-related">
そして、スクリプトで:
var elem = document.getElementById('checkThisOnly');
if (getComputedStyle(elem).visibility...) {
......
}