我有这个代码,它有一个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);
})();
为什么事件监听器没有将事件附加到单选按钮?
答案 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的第二个参数必须是函数表达式 ..你提供了字符串..