電子書籍の厳選無料作品が豊富!

下記のソースのように<li>タグが多数あるものを
上から3つのみを表示させるような形にしたいのですが
(<li></li>を上から3つのみに制限)
どのようなスクリプトを書けば良いでしょう?

<div id="box">
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>

ご伝授いただけるととても助かります!

A 回答 (3件)

表示しない場合、表示させる仕組みはいらないのですか?


最近のブラウザならnth-childなんて疑似クラスもあるみたいですが
(当然IEは非対応)

<style>
#box li{
display:none
}
#box li:nth-child(1),#box li:nth-child(2),#box li:nth-child(3){
display:list-item;
}
</style>
<div id="box">
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
</ul>
</div>

この回答への補足

IE対応なので、jsで実装したいのですが・・・

補足日時:2009/12/07 14:40
    • good
    • 0

回答番号:No.1に関して



HTML読込終了後にscriptを走らせないとダメじゃないでしょうか?

~省略
<script type="text/javascript">
window.onload=function() {
var e = document.getElementById('box').getElementsByTagName('li');
for (var i=3; i<e.length; i++) e[i].style.display = 'none';
}
</script>
~省略
    • good
    • 0
この回答へのお礼

ありがとうございました!実装できました!

お礼日時:2009/12/07 15:20

4つ目以降を非表示にするのでよければ、こんな感じ?



var e = document.getElementById('box').getElementsByTagName('LI');
for (var i=3; i<e.length; i++) e[i].style.display = 'none';

この回答への補足

教えていただいた形でトライしてみましたが
うまく動作してくれません。。。
記述がおかしいでしょうか?

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<script type="text/javascript">
var e = document.getElementById('box').getElementsByTagName('li');
for (var i=3; i<e.length; i++) e[i].style.display = 'none';
</script>
</head>
<body>
<div id="box">
<ul>
<li>あああああああ</li>
<li>あああああああ</li>
<li>あああああああ</li>
<li>あああああああ</li>
<li>あああああああ</li>
<li>あああああああ</li>
<li>あああああああ</li>
<li>あああああああ</li>
<li>あああああああ</li>
<li>あああああああ</li>
</ul>
</div>
</body>
</html>

補足日時:2009/12/07 14:38
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!