开发者问题收集

为什么我收到无法设置未定义属性的错误[重复]

2022-09-05
488

我尝试为所有 <li/> 元素指定字体大小,但出现错误,但我不知道原因。

错误:

error is : Uncaught TypeError: Cannot set properties of undefined (setting 'fontSize')

这是我的代码,请帮忙

<ul id="task-list">
  <li class="task">Gorev1</li>
  <li class="task">Gorev2</li>
  <li class="task">Gorev3</li>
  <li class="task">Gorev4</li>
  <li class="task">Gorev5</li>

</ul>

<script>
  let sonuc;

  let taskList = document.getElementsByClassName("task");

  for (let task in taskList) {
    let i;
    i++;
    taskList[task].style.fontSize = "50px";
    taskList[task].style.color = "red";
  }
</script>
3个回答

你的 for 循环是错误的。试试这个:

for (const task of taskList)
{
    task.style.fontSize = "50px";
    task.style.color = "red";
}
Alex
2022-09-05

我不知道您的情况是否绝对需要使用 javascript(如果是这种情况,请随意在这个答案下发表评论),但我认为您可以使用 css 实现相同的结果。

.task {
  font-size: 50px;
  color: red;
}
<ul id="task-list">
  <li class="task">Gorev1</li>
  <li class="task">Gorev2</li>
  <li class="task">Gorev3</li>
  <li class="task">Gorev4</li>
  <li class="task">Gorev5</li>
</ul>
Adriano
2022-09-05

in 循环 不仅返回索引,还返回一些使您的数据无效的额外属性。

您可以通过 console.log 验证 in 循环中的所有值,如下所示

<ul id="task-list">
  <li class="task">Gorev1</li>
  <li class="task">Gorev2</li>
  <li class="task">Gorev3</li>
  <li class="task">Gorev4</li>
  <li class="task">Gorev5</li>

</ul>

<script>
  let sonuc;

  let taskList = document.getElementsByClassName("task");

  for (let task in taskList) {
    console.log(task)
  }
</script>

就您而言,您的循环已在 length 处停止。

taskList['length'].style.fontSize = "50px"; //invalid, we don't have index for 'length'

您可以使用 of 循环

<ul id="task-list">
  <li class="task">Gorev1</li>
  <li class="task">Gorev2</li>
  <li class="task">Gorev3</li>
  <li class="task">Gorev4</li>
  <li class="task">Gorev5</li>

</ul>

<script>
  let sonuc;

  let taskList = document.getElementsByClassName("task");

  for (let task of taskList) {
    task.style.fontSize = "50px";
    task.style.color = "red";
  }
</script>

或者使用 i 的传统循环>

<ul id="task-list">
  <li class="task">Gorev1</li>
  <li class="task">Gorev2</li>
  <li class="task">Gorev3</li>
  <li class="task">Gorev4</li>
  <li class="task">Gorev5</li>

</ul>

<script>
  let sonuc;

  let taskList = document.getElementsByClassName("task");

  for (let i = 0; i < taskList.length; i++) {
    taskList[i].style.fontSize = "50px";
    taskList[i].style.color = "red";
  }
</script>
Nick Vu
2022-09-05