在这种情况下,我想改变一半孩子的内部html。
普通的javascript或jquery适合我。
document.getElementById("cont").children/*only effect the bottom half*/.innerHTML = "Changed";
//jquery also works for me

<div id="cont">
<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>
<p>5</p>
<p>6</p>
<p>7</p>
<p>8</p>
</div>
&#13;
期望的输出:
<div>
<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>
<p>Changed</p>
<p>Changed</p>
<p>Changed</p>
<p>Changed</p>
</div>
答案 0 :(得分:2)
如果孩子的数量是固定的,你可以用一个选择器字符串来实现它,nth-child
:
document.querySelectorAll('#cont > p:nth-child(n + 5')
.forEach(p => p.textContent = 'Changed');
&#13;
<div id="cont">
<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>
<p>5</p>
<p>6</p>
<p>7</p>
<p>8</p>
</div>
&#13;
或者,如果它没有修复,只需先将该集合减半:
const ps = document.querySelectorAll('#cont > p');
[...ps].slice(parseInt(ps.length / 2))
.forEach(p => p.textContent = 'Changed');
&#13;
<div id="cont">
<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>
<p>5</p>
<p>6</p>
<p>7</p>
<p>8</p>
</div>
&#13;
当您分配文字时,请尝试分配到textContent
而不是innerHTML
。在故意分配HTML字符串时应使用innerHTML
。