我目前正在学习Java脚本,并测试如何调用和更新元素的子元素.我能够更新中间的子元素,现在我想使用中间的子元素更新第一个子元素,我不确定我做错了什么.

var div = document.getElementsByTagName("div")[0];
var midp = div.children[1];
var midPText = (midp.innerHTML = "This is the middle child");
var firstp = midp.previousSibling;
var firstPText = firstp.innerHTML = "This is the first child";
<div>
  <p style="margin-top:2rem; background-color:#ccff33; padding:2rem; color:black;"></p>
  <p style="margin-top:2rem; background-color:#99cc00; padding:2rem; color:white;"></p>
  <p style="margin-top:2rem; background-color:#394d00; padding:2rem; color:white;"></p>
</div>

推荐答案

这个问题是因为在<div>个元素之间是TextNode.这是由previousSibling人 Select 的,而不是你试图瞄准的div人.

要做你需要做的事,用previousElementSibling代替.这将仅 Select 元素,而不 Select node .

另外,顺便提一句,不要使用内联样式.将您的css放在外部样式表中.

var div = document.getElementsByTagName("div")[0];
var midp = div.children[1];
var midPText = (midp.innerHTML = "This is the middle child");
var firstp = midp.previousElementSibling;
var firstPText = firstp.innerHTML = "This is the first child";
div>p {
  margin-top: 2rem;
  padding: 2rem;
  color: white;
}

div>p:nth-child(1) {
  background-color: #ccff33;
  color: black;
}

div>p:nth-child(2) {
  background-color: #99cc00;
}

div>p:nth-child(3) {
  background-color: #394d00;
}
<div>
  <p></p>
  <p></p>
  <p></p>
</div>

Javascript相关问答推荐

如何使用JavaScript用等效的功能性HTML替换标记URL格式?

在分区内迭代分区

被CSS优先级所迷惑

我可以从React中的出口从主布局调用一个处理程序函数吗?

仅针对RTK查询中的未经授权的错误取消maxRetries

在观察框架中搜索CSV数据

在Three JS中看不到补间不透明度更改效果

类构造函数不能在没有用With Router包装的情况下调用

如何在 Select 文本时停止Click事件?

一个实体一刀VS每个实体多刀S

当从其他文件创建类实例时,为什么工作线程不工作?

如何通过Axios在GraphQL查询中发送数组

Reaction即使在重新呈现后也会在方法内部保留局部值

如何在FiRestore中的事务中使用getCountFromServer

为什么我的SoupRequest";被重置为初始值,以及如何修复它?

如何将字符串拆分成单词并跟踪每个单词的索引(在原始字符串中)?

在Puppeteer中使用promise进行日志(log)记录时出现TargetCloseError

如何检测当前是否没有按下键盘上的键?

扩散运算符未按预期工作,引发语法错误

将字符串解释为数字;将其重新编码为另一个基数