2012-03-04 90 views
1

调用getElementById()以检索表单上的“隐藏”字段返回null无法从getElementById获得输入类型=“隐藏”

我已经研究过其他SO问题,许多人在调用getElementById()时使用隐藏字段的'名称'而不是'id',或者在实际的html之前在脚本顶部执行getElementById(),隐藏字段已被浏览器处理。这两个错误都可以解释为什么getElementById()为他们返回null

我可能是错的,但我不认为这是我的情况。

这是我的形式:

<form name="theDeleteItemForm" id="deleteItemForm" action="deleteTheSelectedItem" 
      method="post" 
    <input type="hidden" id="theHiddenField" name="deleteThisSelectedItem" value=""> 
</form> 

这里是一个Javscript处理程序,它成功执行上被点击的页面时,“删除”按钮(我可以告诉大家,因为我alert()盒在处理程序以下功能如雨后春笋般冒出):

function deleteItem() 
{ 
    alert("Just entered deleteItem()"); 

    var theFieldToDelete = document.getElementById('theHiddenField'); 

    // THIS IS THE PLACE WHERE I FOUND THAT 'theFieldToDelete' WAS 'null' 
    alert("Just got the hidden field element, which is: " + theFieldToDelete); 

     // THIS DOES NOTHING MORE THAN TO PREVENT THE 'alert' THAT FOLLOWS FROM APPEARING 
    theFieldToDelete.value = "upForDeletion"; 

    alert("deleteItem() was called, about to submit the form"); 

    document.theDeleteItemForm.submit();  
} 

我不理解为什么我得到getElementById()null回报。我的印象是 getElementById()适用于type="hidden"字段的FINE。

此外,我用于我的隐藏字段的ID - theHiddenField - 在我的文件中是100%唯一的。

当我试图通过getElementById()获得隐藏字段时,为什么我会收到null

+4

疑问,这是原因,但你的''标签不被关闭。开头的'

'标签也缺少'>'。 – 2012-03-04 22:01:14

+1

修复你的HTML,这应该正常工作。 – 2012-03-04 22:03:55

+1

并确保您的ID是唯一的 – mplungjan 2012-03-04 22:10:09

回答

7

可能是因为您的<form>元素形成不正确(如引用的示例 - >在开始标记中缺失)?

-1

使用的document.getElementById( 'theHiddenField')。值

+0

这是必要的,但其他事情正在发生。这不会阻止getElementById部分返回null。如果它没有.value时为null,则它将与.value一起未定义。 – jmort253 2012-03-04 22:09:48

相关问题