我有一个HTML表单,在提交时使用PHP动态构建另一个表单。第一个表单操作使用$ _SERVER [' PHP_SELF'],因此第二个表单位于同一页面上。第二个表单操作由FPDF和PHP页面切换并处理,最终输出PDF。
在第二个表单上使用JavaScript来动态构建和显示表单的其他部分,这些部分基于在第二个表单的各个部分进行的输入选择。
在我的JavaScript中,我设置了一些易于使用的变量,引用了第二种形式的几个区域。我的JavaScript确实有一个window.onload函数,我的问题是不,因为在我的JavaScript之前没有加载DOM。
因为我在初始页面加载后动态构建第二个表单,并且在提交第一个表单后,我在控制台中看到了这个错误:
TypeError: myVariable is null.
// Examples of myVariable which are HTML elements not present
// in the DOM until the first form has been submitted.
var drawingsWrapper = document.getElementById('drawingsWrapper');
var groupClass = drawingsWrapper.getElementsByClassName('group');
var groupClassLength = groupClass.length;
构建第二个表单后,此错误将消失,因为它引用的HTML元素现在位于页面上。我的表单和处理,包括JavaScript,一切都按预期工作。
由于我还不是JavaScript方面的专家,所以在我开始依赖像jQuery之类的库之前,我正在使用它并且非常了解它。我正在努力理解这些细微差别。
问题:这个错误是否可以接受,因为它被抛出是因为它所引用的元素还没有存在于DOM中,或者我应该做些什么来不声明变量直到该部分它引用的DOM是否存在?