无法使用javascript工厂模式创建DOM元素

时间:2015-02-19 15:03:33

标签: javascript

我正在尝试使用java脚本工厂模式创建html按钮。 这是工厂界面:

var _button = function(){};
_button.prototype.createButtonType = function(options){
    var buttonType = null;
    if(options.edit == true){
        buttonType = _edit;
    }
    else if(options.remove == true){
        buttonType = _remove;
    }
    return new buttonType(options.holder);
}

**The _edit & _remove functions are as follows**

var _edit = function(holder){
    console.log("Method executing : components._edit",holder)
    var buttonBasicEdit = _basicButton();

    buttonBasicEdit.className = "defaultEdit";  
    buttonBasicEdit.innerHTML = "Edit";
    buttonBasicEdit.onclick = function(){
        //someaction
    };

    holder.appendChild(buttonBasicEdit);    
}

var _remove = function(holder){
    console.log("Method executing : components._remove");
    var buttonBasicRemove = _basicButton();
    buttonBasicRemove.className = "defaultRemove";  
    holder.appendChild(buttonBasicRemove);      
};

function _basicButton(){
    console.log("Method Executing components._basicButton")
    var buttonBasic = document.createElement("button");
    return buttonBasic;
};

## The basic factory calling function is ##
var _buttons = new _button();
_buttons.createButtonType({
    edit:true,
    remove:true,
    holder:buttonHolder
});

问题是当我在原型函数中调用if....else if时,它只调用_edit函数并创建编辑按钮,只是忽略_remove函数。但是当使用两个连续的if循环时,它会抛出undefined is not a function异常。

0 个答案:

没有答案