在appendChild中键入Issue

时间:2014-03-17 14:10:50

标签: javascript

我收到以下错误:

Type Issue
'undefined' is not an object (evaluating 'commands.appendChild')

在以下行中:

commands.appendChild(inputConfirm);

commands来自

var commands = document.forms['commands'];

这里没有错误,所以我相信commands是一个有效的表单对象。 inputConfirm来自

var inputConfirm = document.createElement('input');

这里也没有错误,所以它也应该是有效的。我还设置了inputConfirm的一些属性而没有错误。

可能是什么原因?我很无能......

编辑:脚本正在document.onload事件中执行。请参阅下面的确认答案

1 个答案:

答案 0 :(得分:1)

document.forms是一个包含页面形式的数组。数组索引必须是正数,因此document.forms[0]有效,document.forms['commands']不是。它引用了一个未定义的索引,因此结果在逻辑上是undefined。使用document.getElementById(),assumind'命令'是id:

var form = document.getElementById('commands');
form.appendChild(...);

<强> EDITED

确保在执行此代码时元素存在(我的意思是,DOM已准备就绪)。如果您将此代码放在<script>标记或<head>中的外部文件中,但您还没有将其包裹在window.onloaddocument.DOMContentLoaded事件中我会发现document.getElementById会返回null

为避免这种情况,如上所述,将代码放在任何事件的事件处理程序中,或者只是将</body>结束标记。{/ p>