2013-02-20 45 views
1

我收到错误“无法获取属性的值'已选中”,对象为空或未定义。点击复选框时。无法使用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更坚实所以它的工作原理这个其他网页上,并在任何浏览器?

回答

0

页面上并不总是会有<form>,其名称为"test"

你可以把它没有ID的工作原理,通过使用this引用当前元素:

<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。

+0

这个问题是页面加载时勾选复选框并显示额外的字段。我需要默认为不显示,除非检查....所以我会切换块和没有命令?感谢您的帮助 – user2066907 2013-02-21 00:46:24

+0

然后您在'#hideablearea'上添加'style =“display:none;”'并从复选框元素中移除checked =“checked”'。 @ user2066907 – 2013-02-21 00:48:02

+0

超级!它像一个魅力工作......谢谢 – user2066907 2013-02-21 01:38:55

1

将复选框上的ID,并使用getElementById。这比其他方法更可靠,因为ID必须是唯一的。

+0

因此,我添加id =“submode”到输入字段和 – user2066907 2013-02-21 00:35:06

+0

你能告诉我如何使用getElementById在我的情况?谢谢〜 – user2066907 2013-02-21 00:48:32