You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将getElementById替换为getElementsByTagName后keydown事件不生效如何解决

问题根因

  • document.getElementsByTagName() 方法返回的是包含所有匹配标签名的DOM元素的类数组集合(HTMLCollection),不是单个DOM元素,无法直接调用.style属性修改样式
  • 你代码里直接对返回的集合操作,自然不会生效,同时控制台会抛出属性未定义的报错

正确实现方案

你只需要从返回的集合中按索引取到对应的单个<p>元素即可,如果你页面只有这一个<p>元素,取索引0即可:

<p>
<input type="text" id="demo" onkeydown="keydownFunction()" onkeyup="keyupFunction()">
</p>

<script>
function keydownFunction() {
  // 取匹配到的第一个p元素
  document.getElementsByTagName("p")[0].style.backgroundColor = "red";
}

function keyupFunction() {
  document.getElementsByTagName("p")[0].style.backgroundColor = "green";
}
</script>

如果页面有多个<p>元素,你可以通过遍历集合的方式批量修改所有匹配元素的样式:

function keydownFunction() {
  const pList = document.getElementsByTagName("p");
  for(let i = 0; i < pList.length; i++){
    pList[i].style.backgroundColor = "red";
  }
}

内容的提问来源于stack exchange,提问作者adtybrhn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 16:54:00