javascript - 无法在循环中设置未定义的属性“innerHTML”
问题描述
我想更改按钮的颜色,但我使用任何方法(样式、innerHtml、...)都会收到此消息
错误:未捕获的类型错误:无法设置未定义的属性“颜色”
html: `
<div class="a-section backGround layer">
</div>
<div class="a-section layer">
<div class="a-row dealDetailContainer">
<div class="a-row a-spacing-mini">
<div class="a-row a-spacing-unspecified">
<span class="a-size-mini a-color-base hiddenCss"> </span>
<span class="a-size-mini a-color-base badgeSkew"></span>
</div>
</div>
<div class="a-row stackToBottom">
<div class="a-row a-spacing-medium">
<span class="a-declarative">
<span class="a-button a-button-normal a-button-span12 a-button-primary fixedWidth210">
<span class="a-button-inner">
<button class="a-button-text a-text-center" type="button">
Add to Cart
</button>
</span>
</span>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
`
js:
var button = document.getElementsByClassName=(".a-button-primary .a-button-text");
var i;
for(i=0 ; i <= button.length ; i++){
button[i].style.color = "blue";
}
解决方案
正如@Heretic 的评论中所述,您的语法不正确。我发现的另一个问题是您正在循环超出返回元素的长度。在您的for
循环中,您正在使用<=
而不是<
. 因为我们从, 开始0
,<=
会走得太远,undefined
当循环超过实际元素长度时返回。
这是您尝试执行的操作的基本示例。
var button = document.getElementsByClassName("my-button");
for (var i = 0; i < button.length; i++) {
button[i].style.color = "blue";
}
<button class="my-button">hello</button>
<button class="my-button">hello</button>
<button class="my-button">hello</button>
推荐阅读
- flutter - Dart 类是否具有可以在对象初始化时运行的函数?
- c - 如何在文件句柄结构中实现引用计数?
- php - 在 Laravel 中,如果你创建 $ php artisan make:model Staff -m 为什么 Laravel 没有将员工这个词复数为员工?
- c# - UWP Frame backword 导航到特定页面
- c++ - 如何使用不相关的数据加速 for 循环?
- python - 如何在第一个文本频道 discord.py 中发送欢迎消息
- angular - 在 chrome v.40 上运行 Angular 10 应用程序需要哪些 pollifills?
- javascript - 仅在 CSS 中递归选择所有子 DIV 元素
- javascript - 如何在mongoDb中实现多对多关系?
- html - CSS:修复登录表单中输入的位置