2017-12-18 9 views
-3

私は特定の要素を隠したり表示したりしようとしています。親要素で行い、子要素ではできません。誰がなぜこれが起こるのか知っていますか?style.displayがうまくいかないようです。

const ulList = document.querySelector('ul'); 
const studentList = ulList.querySelectorAll('li'); 

ulList.style.display = 'none'; // (when I do it like this, everything is fine). 

studentList.style.display = 'none'; // (but if I do it like these, the error "Uncaught TypeError: Cannot set property 'display' of undefined" appears on the console) 

ありがとうございました!

+0

なぜ「jquery」タグを使用しましたか?これはjqueryとは関係ありません。 – Soviut

答えて

1

querySelector()は最初に一致する単一要素だけを返しますが、querySelectorAll()はリストを返します。すべてのリストアイテムにスタイルを適用する必要があります。 次のように試してみてください。

const studentList = document.querySelectorAll('li'); 

studentList.forEach(function(li){ 
    li.style.display = 'none'; 
}); 
+0

私はあなたが言うことを得ました...しかし、私はこれを(ループでも)好きにすると、 "ブロック"する表示プロパティは有効になりませんか?インタプリタは無視します。 const ulList = document.querySelector( 'ul'); const studentList = document.querySelectorAll( 'li'); ulList.style.display = 'none'; for(let i = 0; i = numPage && i

+0

if((i + 1)> = numPage && i Mamun

+0

答えを読んで私が投稿したのは –

0

を私はあなたが言うことだ...しかし、私は(ループ内でも)このようにそれを行う理由ときに、「ブロック」に表示プロパティが有効になりません。 。通訳者は無視します。

const ulList = document.querySelector('ul'); 
const studentList = document.querySelectorAll('li'); 

ulList.style.display = 'none'; 

for (let i = 0; i < studentList.length; i += 1) { 
    if ((i + 1) >= numPage && i < y) { 
     studentList[i].style.display = 'block'; 
    } 
} 

条件には注意しないでください。それは私のコードの一部です。ループと条件付き実行、0インデックスの最初の要素がブロックプロパティを受け取ると、nothingsが発生します。

+0

あなたの親は表示するように設定されています:なし、右?それは問題です... https://jsfiddle.net/1u96ag16/ ulを表示するにはあまり意味がありません:none、この場合は – sinisake

+0

すごい!助けてくれてありがとう、お二人とも –

関連する問題