0

我正在尝试以编程方式创建一个具有 onclick 事件的按钮。

 var removeFunction = "removeEmployee(" + "'" + phone + "'" + "," + "'" + pin + "'" + "," + "'" + employees[i].ID + "'" + ")";

    var removeButton = "<a onclick='" + removeFunction + "' " + "data-role='button' data-icon='delete' data-iconpos='notext'></a>";

我在与上面动态创建的代码相同的 javascript 文件中有这个函数。我认为这很糟糕,因为我需要在字符串参数周围添加引号。上面的代码是对此的尝试,但如果我查看创建的标记,它会读取..

onclick="removeEmployee(" 

有什么东西让剩下的东西被切断了,我不确定是什么?只要我的javascript文件中有一个名为“removeEmployee”的函数,它也会运行吗?

4

4 回答 4

1

不是为了回避这个问题,而是你为什么不做这样的事情:

var bindEvent = function(el, event, handler) {
  if (el.addEventListener){
    el.addEventListener(event, handler, false); 
  } else if (el.attachEvent){
    el.attachEvent('on'+event, handler);
  }
}

var removeButton = document.createElement("a");

removeButton.setAttribute("data-role", "button");
removeButton.setAttribute("data-icon", "delete");
removeButton.setAttribute("data-iconpos", "notext");

bindEvent(removeButton, "click", function(){
    removeEmployee(phone, pin, employees[i]['id']);
});
于 2012-09-10T21:21:17.517 回答
0

在 XML 代码中,您可以使用双引号或单引号来设置字符串。在这件事上,你应该使用单引号,然后你可以在你的字符串中使用双引号。

像这样:

onclick='removeEmployee("45681", 1, "test")'

反之亦然:

onclick="removeEmployee('45681', 1, 'test')"

当您编写您提到的代码时,HTML 解析器看起来像这样:

<element onclick='removeEmployee(' 45681=', 1, ' test=')' />

在这种情况下,您的元素有 3 个具有三个不同名称的属性,而不仅仅是“onclick”属性而且它是错误的。

干杯

于 2012-09-10T21:19:57.210 回答
0

尝试:

var removeFunction = "removeEmployee('" + phone + "','" + pin + "','" + employees[i].ID + "')"; 

还:

var removeButton = "<a onclick='" + removeFunction + "' data-role='button' data-icon='delete' data-iconpos='notext'></a>";
于 2012-09-10T21:20:09.713 回答
0

你可以使用

var a=document.createElement('a'),
attrs={data-role:'button',data-icon:'delete',data-iconpos:'notext'};
for(var i in attrs){a.setAttribute(i,attrs[i]}
a.onclick=function(){
    removeEmployee(phone,pin,employees[i].ID);
}
于 2012-09-10T21:22:13.533 回答