javascript - 更改时类型错误 : checked is not a function at HTMLInputElement.

标签 javascript html

我在为复选框的onchange编写checked()函数时遇到了问题:

<input
      type="checkbox"
      id = "checked"
      onchange="checked()"
    />

这是我的 JavaScript:

const check = document.getElementById("checkbox")
const yes = document.getElementsByClassName("yes")

function checked() {
  if (check.checked) {
    yes.innerHTML = "Yes"
  } else {
    yes.innerHTML = "No"
  }
}

基本上,我希望带有 yes 类的跨度根据是否选中复选框来更改输出(说是或否) 然而,当我检查时,它说“TypeError:检查不是一个函数 at HTMLInputElement.onchange”,即使我的 javascript 完美链接到我的 HTML(我用警报检查了这一点)。

我该如何解决这个问题?

最佳答案

您通过 id checkbox 获取复选框,但在输入字段中输入的 id="checked" 不正确,因此您需要更正您的 id从选中复选框

<input
      type="checkbox"
      id = "checkbox"
      onchange="checked()"
    />

您还需要将函数名称从 checked 更改为另一个名称(例如 checkData ,它与 native 值/函数不相似),然后包装您的 document.getElementById 进入您的函数

您也不应该使用 getElementsByClassName ,因为它返回元素列表,而 innerHTML 不适用于这些元素,因此您需要使用 选择特定元素>getElementById

function checkData() {
  const check = document.getElementById("checkbox")
  const yes = document.getElementById("yes") //need to use `getElementById` instead of `getElementsByClassName`

  //if `yes` element is not there, we don't need to set `innerHTML`
  if(!yes) {
    return
  }

  if (check.checked) {
    yes.innerHTML = "Yes"
  } else {
    yes.innerHTML = "No"
  }
}

请记住像这样实现您的 yes 元素

<p id="yes"></p> //tag name is your choice

从技术上讲,checked 是该输入上 value 属性的名称,它不是函数,因此您不能将其用作函数名称。

顺便说一下,感谢@Teemu 的建议!

关于javascript - 更改时类型错误 : checked is not a function at HTMLInputElement.,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71466519/

相关文章:

jquery - CSS/Jquery 时间轴/调度程序显示

javascript - 如何从模型数据中预选纸张下拉菜单中的纸张项目?

javascript - json 与对象中的比较

javascript - Jest - React 组件中的模拟粗箭头功能

javascript - 如何在导入的 JS 库中访问 VueJS Mixin

javascript - 从数组中删除重复对象,不包括 JavaScript 中的特定键

html - 使 flex 容器受窗口高度限制

javascript - 名为 `animate` 的 JS 函数在 Chrome 中不起作用,但在 IE 中起作用

javascript - PHP 中的自动建议搜索结果错误

javascript - 使用 XMLHttpRequest 更新元素后,addEventListener 停止监听