在每个div X中选择#2元素

时间:2017-08-10 00:05:04

标签: javascript css

我试图创建一个脚本,它会改变每个出现的内容,如下所示:

<div id="random numbers">
<div class="column-1"></div>
<div class="column-1"><a href="...">this value I want to change</a></div>
<div class="column-1"></div>
</div>

其中有很多^

到目前为止,这是我尝试使用的代码:

var elements = document.querySelectorAll('column-1');

for ( var i=elements.length; i--; ) {
    elements[ i ].InnerHTML = "test";
}

但这不起作用,我真的只是试图拼凑一些代码,这些代码将取代每个<div id="random numbers">的#2列-1的内容

我感谢您的任何帮助,提前谢谢

1 个答案:

答案 0 :(得分:2)

上述代码存在两个问题。首先,您的.querySelectorAll()应该定位到;你需要指定句号。其次,.innerHTML中的i必须为小写。

修复了这两个错误之后,您只能通过运行基于 modulo 2的条件来将更改应用于每个 second 元素i % 2如下:

var elements = document.querySelectorAll('.column-1');
for (var i = 0; i < elements.length; i++) {
  if (i % 2) {
    elements[i].innerHTML = "OVERRIDDEN";
  }
}
<div id="random numbers">
  <div class="column-1">Should STAY</div>
  <div class="column-1"><a href="...">Should CHANGE</a></div>
  <div class="column-1">Should STAY</div>
</div>

如果您专门尝试定位<a>代码,则可以使用querySelectorAll('.column-1 a')本身直接执行此操作,如果您要替换<a>代码,请使用.outerHTML本身。请注意,这不需要条件:

var elements = document.querySelectorAll('.column-1 a');
for (var i = 0; i < elements.length; i++) {
  elements[i].outerHTML = "OVERRIDDEN";
}
<div id="random numbers">
  <div class="column-1">Should STAY</div>
  <div class="column-1"><a href="...">Should CHANGE</a></div>
  <div class="column-1">Should STAY</div>
</div>

希望这有帮助! :)