无法使用javascript获取属性的值

时间:2013-02-20 23:27:08

标签: javascript

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

表单的名称是'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更加扎实,以便在其他网页和任何浏览器上运行?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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';
  }
}

Demo

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