javascript - Select by className e copying a style...我的错误在哪里?

标签 javascript css

我对这段代码感到疯狂:

function copia() {
  var parA = document.getElementsByClassName("A");
  var parB = document.getElementsByClassName("B");

  for (i = 0; i < parA.length; i++) {
    parB[i].style.backgroundColor = parA[i].style.backgroundColor;
  }
}
.A {
  background-color: #FFFFC2;
}

.B {
  background-color: #ccffff;
}
<p class="B">ONE</p>
<p class="A">TWO</p>
<p class="B">THREE</p>
<p class="A">FOUR</p>
<input type="button" value="CLICCA" onclick="copia()">

理论上,单击按钮应该将 A 类所有元素的背景色复制到 B 类的相应元素中(假设两者具有相同数量的元素)。但它不起作用。

最佳答案

parA[i].style.backgroundColor; 将从样式属性中获取背景颜色。要获取实际值,您需要执行以下操作:

var style = window.getComputedStyle(parA[i]),
parB[i].style.backgroundColor = style.getPropertyValue('background-color');

代码示例

document.getElementById('btn').addEventListener('click', function () {

    var parA = document.getElementsByClassName("A");
    var parB = document.getElementsByClassName("B");
    
    for (i = 0; i < parA.length; i++) {
    	 var style = window.getComputedStyle(parA[i]);
       parB[i].style.backgroundColor = style.getPropertyValue('background-color');
    }
    
});
.A {
    background-color: #FFFFC2;
}

.B {
     background-color: #ccffff;
}
<p class="B">ONE</p>
<p class="A">TWO</p>
<p class="B">THREE</p>
<p class="A">FOUR</p>
<input id="btn" type="button" value="CLICCA">

关于javascript - Select by className e copying a style...我的错误在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46714972/

相关文章:

javascript - 谷歌图表 : Set exact Date-boundarys in charts (when using FilterSliders)

html - div 之间的响应边距

html - 如何将 div 堆叠在一起?绝对位置不起作用

javascript - 注册 5 秒后隐藏 div

javascript - Angular - 如何将 Angular 对象制作为数组

html - 如何将 img 添加到已经设置样式的 html 代码块

javascript - 如何将文本插入 &lt;input type ="file"/>

css - 站点基础 : min width/fixed table column

javascript - 松散地搜索关联数组是否存在嵌套元素

javascript - 在 Jasmine 中 mock xhr 调用