添加事件侦听器不将事件附加到元素

时间:2015-07-26 02:42:28

标签: javascript

我有这个代码,它有一个createDom函数,它接受一个dom元素对象及其父元素作为参数,并创建dom元素。 它创建元素,但问题出在add event listener部分。

(function()

{

    var createDom=function(obj,parent)

    {

        var i=2,element,a,number,n,j,type;
        element=document.createElement(obj.tag);
        for(i=1;i<Object.keys(obj).length;i++)
        {
            a=Object.keys(obj)[i];  //Get Key Name
            type=typeof(obj[a]);


            if(type!='object')
            element[a]=obj[a];          

            if(a=='events')
            {
                for(k in obj[a])    
                {

                    element.addEventListener(k,obj[a][k]);
                }   
            }

        }
        parent.appendChild(element);


    }



    function removeNode(e)
    {
        alert('ss');
    }

    var c=  {
            tag:'input',
            type:'radio',
            name:'options',
            events:{
                            "click":"removeNode"
                        },
                    }
    createDom(c,document.body);

})();

为什么事件监听器没有将事件附加到单选按钮?

1 个答案:

答案 0 :(得分:1)

试试这个:

(function()
{
        var createDom=function(obj, parent)
        {
                var i=2, element, a, number, n, j, type;
                element=document.createElement(obj.tag);
                for(i=1; i < Object.keys(obj).length; i++)
                {
                        a=Object.keys(obj)[i];  //Get Key Name
                        type= typeof(obj[a]);
                        if(type != 'object')
                        {
                                element[a]=obj[a];
                        }
                        if(a == 'events')
                        {
                                for(var k in obj[a])
                                {
                                        console.log(obj[a][k]);
                                        element.addEventListener(k, obj[a][k]);
                                }
                        }
                }
                parent.appendChild(element);
        };
        var c={
                tag   : 'input',
                type  : 'radio',
                name  : 'options',
                events: {
                        "click": function()
                        {
                                alert();
                        }
                }
        };
        createDom(c, document.body);
})();

eventListener的第二个参数必须是函数表达式 ..你提供了字符串..