使用 mootools 我有一个 'builder' 类,它制造表单对象,动态创建 div。一些表单对象由几个不同的对象组成。例如,一个选择对象具有一个用于过滤选择器内容的文本框和一个用于保存选择的按钮。
在这种情况下,我希望过滤器框和按钮位于附加到整个表单对象的 div 的 div 中,以便具有“包装器”。
但是,我在附加到动态创建的表单对象的 div 时遇到问题。
加载 dom 后,调用 'builder' 类:
window.addEvent('domready', function()
{
builder = new Build();
});
Builder 这样创建一个新的 div
var div = document.createElement('div');
var div_id = 'the_div_id_for_my_form_object';
div.setAttribute('id', div_id);
然后它创建表单对象,该对象将 div 作为其参数之一
var form_obj = superSelector(div);
在 form_obj 构造函数内部,这个 div 被保存为一个成员变量,this.div = div。过滤器文本框以及按钮被创建。
这是我看到问题的地方。(由于过滤器文本框和按钮的问题相同,我将仅描述文本框的情况)
form_obj 的 div 被传递给过滤器文本框的构造函数。创建过滤器文本框时,它会为自己创建一个 div
var div = document.createElement('div');
var div_id = 'the_div_id_for_my_filter_box';
当我尝试将此 div 附加到 form_obj 的 div 时,我收到一个 js 错误,说我正在尝试附加到“null”
var filterBox = new Class({
initialize: function(name, form_obj)
{
this.name = name;
this.div = document.createElement('div');
this.div.setAttribute('id', name);
document.getElementById(form_obj.div).appendChild(this.div);
}
产量:
“未捕获的 TypeError:无法调用 null 的方法‘appendChild’”
我不知道如何解决这个问题。我觉得我想附加的 div 在我尝试附加到它时并不存在。但是,我看不到生成一个事件的方法,它告诉我它何时确实存在,以便我可以将任何“子”div 的构建推迟到那时