3 回答

TA貢獻1833條經(jīng)驗 獲得超4個贊
有兩種解決方法
第一:如果HTML和JS不變的話,可以把CSS選擇器nth-child換成nth-of-type!
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>選擇某個區(qū)間的元素-CSS3</title>
<style>
#ul{ width:50%;}
li{ background:#f5f5f5; border-bottom:1px solid #ddd; padding:5px 0; }
#ul li:nth-of-type(n+5){ background:#F90}
/*ul li:nth-child(-n+2){ background:#ccc}*/
</style>
</head>
<body>
<ul id='ul'>
<script>
for(var i=1;i<=12;i++){
document.write('<li>' + i + '</li>')
}
</script>
<!--
<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>
<li>11</li>
<li>12</li>
-->
</ul>
</body>
</html>
第二種解決方法,CSS不變,就是照DriftKing說的把JS寫在父元素外面,add進去:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>選擇某個區(qū)間的元素-CSS3</title>
<style>
#ul{ width:50%;}
li{ background:#f5f5f5; border-bottom:1px solid #ddd; padding:5px 0; }
#ul li:nth-child(n+5){ background:#F90}
/*ul li:nth-child(-n+2){ background:#ccc}*/
</style>
</head>
<body>
<ul id='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>
<li>11</li>
<li>12</li>
-->
</ul>
<script>
var u = document.getElementById("ul");
for(var i=1;i<=12;i++){
var li = document.createElement("li");
li.innerText = i;
u.appendChild(li);
}
</script>
</body>
</html>

TA貢獻1719條經(jīng)驗 獲得超6個贊
用js生成的標簽,查看控制臺可以看到這樣的結(jié)構(gòu):
可以看到ul下面有你的<script></script>
同樣,原生的標簽中如果加入一個空的<script></script>空標簽的話,兩種方式的結(jié)果就一樣了,
感覺是把scritp標簽頁當成了ul的一個child.
添加回答
舉報