1

我收到错误消息“无法获取 'checked' 属性的值。对象为空或未定义。” 单击复选框时。

表单的名称是“test”,我想根据选中的第一个复选框显示更多输入字段,如果它们通过它,那么我不希望显示其他字段。

这是脚本:

function showhidefield()
{
    if (document.test.submode.checked) {
        document.getElementById("hideablearea").style.display = "block";
    } else {
        document.getElementById("hideablearea").style.display = "none";
    }
}

这是我的输入行:

<input type="checkbox" name="submode" onclick="showhidefield()">

有没有办法让我的 JS 更稳固,以便在其他网页和任何浏览器上运行?

4

2 回答 2

1

在复选框上放置一个 ID,然后使用getElementById. 这比其他方法更可靠,因为 ID 必须是唯一的。

于 2013-02-20T23:33:27.817 回答
0

页面上不会总是有一个<form>带有名称的"test"

您可以通过使用this引用当前元素使其在没有 id 的情况下工作:

<input type="checkbox" name="submode" onclick="showhidefield(this, 'hideablearea')">

JavaScript:

function showhidefield(element, id)
{
  var node = document.getElementById(id);

  if (node) {
    node.style.display = element.checked ? 'block' : 'none';
  }
}

演示

该函数的第一个参数是复选框本身,第二个参数是您希望显示或隐藏的元素的 id。

于 2013-02-20T23:36:06.927 回答