JavaScript数组随着DOM的改变而改变
JavaScript array changes when DOM changes
我将document.getElementsByClassName("red")的结果赋值给数组redElements。然后我将一个元素从类。red更改为类。blue。我希望redElements保持它原来的三个值,但是它现在只包含两个仍然是红色的元素。这是令人惊讶的。这是什么原因呢?我应该查什么来了解更多关于这种情况发生的原因?
<!DOCTYPE html>
<html>
<head>
<style>
.red { color: red; }
.blue { color: blue; }
</style>
</head>
<body>
<span class="red">1</span>
<span class="red">2</span>
<span class="red">3</span>
<script>
var redElements = document.getElementsByClassName("red");
alert(redElements.length);
firstRedElement = redElements[0];
firstRedElement.className = "blue";
alert(redElements.length);
</script>
</body>
</html>
这是因为className
函数将覆盖现有的类:
试试这个:
<script>
var redElements = document.getElementsByClassName("red");
alert(redElements.length);
firstRedElement = redElements[0];
firstRedElement.className = firstRedElement.className + " blue";
alert(redElements.length);
</script>
或者你甚至可以试试:
firstRedElement.classList.add("blue");
相关文章:
- Dom 字符串在使用 jQuery attr 操作后不会改变
- JavaScript数组随着DOM的改变而改变
- 我希望我的操作改变它所附加的DOM元素
- 初始化$后的插件.load()改变了DOM
- 改变DOM,但不显示在浏览器中
- 如何调用函数一旦dom元素的样式改变Javascript/jquery
- 我应该如何使用JQuery改变鼠标悬停时DOM元素的背景颜色?
- 变异观察者- DOM被回调函数改变
- jQuery:为什么index()在动态改变DOM后返回-1
- 改变DOM中标签的位置
- 如何用AngularJS改变DOM元素的CSS属性
- 重载页面不改变DOM - Javascript
- 根据AngularJS变量改变DOM元素类型
- 如何在javascript中改变DOM的innerHTML
- 将DOM元素移动到任意位置,而不改变DOM
- 改变DOM——如何编写一个单元测试来检查脚本是否对页面上的元素进行任何用户可见的更改
- 在AngularJS中改变DOM元素的位置
- 用CSS改变DOM元素顺序(鳄鱼)
- 改变DOM中出现在UL-element之前的Div
- Knockout JS:使用改变DOM的旧验证代码