样式数组元素 Javascript
2017-05-04
18815
我有一个测试分数数组,如果分数低于 70%,则需要将其显示为红色,因此我创建了一个数组和一个 for 循环来从该数组中挑选出这些分数。但是,当我尝试将这些数组元素设置为红色时,我收到此错误。我对 JS 有点陌生,所以这可能是一个简单的修复。
数组可以正常工作,并且它会在控制台日志中打印低于 70 的分数,但是如果我无法将它们设置为红色。有什么想法吗?
Uncaught TypeError: Cannot set property 'color' of undefined at index.html:23
<script>
var scoresArray = [84, 72, 56, 84, 0, 76, 72, 68, 70];
for (var i = 0; i < scoresArray.length; i++) {
if(scoresArray[i] < 70) {
var c = scoresArray[i];
c.style.color = "red";
}
}
testgen(scoresArray);
</script>
函数 testgen 是从外部脚本调用的。
function testgen(scoresArray) {
document.write("<li class=\"special\">");
for (var i=0; i<scoresArray.length; i++) {
document.write("<li>" + scoresArray[i] + "</li>");
}
document.write("</li>");
}
2个回答
您的代码中存在一个很大的缺陷。
我们对 DOM 元素具有 style 属性,而不是任何变量或数组。
当您这样写时:
<script>
var scoresArray = [84, 72, 56, 84, 0, 76, 72, 68, 70];
for (var i = 0; i < scoresArray.length; i++) {
if(scoresArray[i] < 70) {
var c = scoresArray[i];
c.style.color = "red";
}
}
testgen(scoresArray);
</script>
您的 c 是一个数组元素。它只是一个可用于加法/减法或其他运算的元素。
但是当您使用 c.style 时,它​​意味着“c”应该是一个 DOM 元素,如
this:
<div id="myElem">Hello</div>
请阅读一次有关 DOM 元素以及如何使用 JS 在其上应用 CSS。
对于您的情况,如果您希望特定元素为红色,则可以使用内联 CSS:
document.write("<li style='color:red'>" + scoresArray[i] + "</li>");
Nitesh
2017-05-04
当您将 c 放入
var c = scoresArray[i];
时,它是一个数组元素,而不是 DOM 对象。因此您无法为其设置样式。
由于您无法更改该外部加载的脚本(我假设),因此有一种解决方法可以完成您在此处尝试执行的操作。
您可以简单地将低于 70 的分数封装在 span 标记中,如下所示:
scoresArray[i] = '<span style="color:red">' + scoresArray[i] + '</span>';
代替这两行(删除):
var c = scoresArray[i];
c.style.color = "red";
vishva8kumara
2017-05-04