Javascript 将属性从DOM节点复制到dijit小部件中?

Javascript 将属性从DOM节点复制到dijit小部件中?,javascript,scala,lift,dojo,Javascript,Scala,Lift,Dojo,我有这样的html标记 <button id="button1" onclick="alert='yup'"></button> 如何将onclick属性复制到按钮小部件中?我之所以想这样做,是因为我使用的web框架(lift)在我将按钮放入dijit小部件之前向按钮添加了一些函数。PEM是绝对正确的,为此使用dojo解析器(onclick的关键字将使用大写字母“C”):“onclick='alert(true)'”或“data dojo props='onclick:

我有这样的html标记

<button id="button1" onclick="alert='yup'"></button>

如何将onclick属性复制到按钮小部件中?我之所以想这样做,是因为我使用的web框架(lift)在我将按钮放入dijit小部件之前向按钮添加了一些函数。

PEM是绝对正确的,为此使用dojo解析器(onclick的关键字将使用大写字母“C”):“onclick='alert(true)'”或“data dojo props='onclick:function(){alert(true)}”

无论如何,这里有一个方法可以实现它

var dom = dojo.byId('button1');
var fn = eval(dom.onclick.toString());
dom.onclick = null;
var button = new Button({label: "button", onClick:fn}, "button1");

使用您的框架将数据dojo类型添加到html中,然后使用dojo解析器将整个内容转换为小部件不是更好吗?我不喜欢将所有内容都粘贴在html中(事实上,我已经尝试过您的解决方案,并且工作得很好)。我认为在js中粘贴所有内容要干净得多。我想知道这是否可能。是的。我想这取决于您的dojo版本。如果您的框架允许,您可以将所有添加的函数放入数据dojo props='someFunc:function(param){//whatever},someProp:someValue“在最坏的情况下,您可以始终手动使用DOM访问器从DOM节点获取数据,但正如PEM所说,使用Dojo方式进行操作可能会更干净。我使用声明式样式制作了一些模型,并将其与使用Dojo.attr的hack进行比较。声明式看起来更好。我想我会坚持使用decl主动式
var dom = dojo.byId('button1');
var fn = eval(dom.onclick.toString());
dom.onclick = null;
var button = new Button({label: "button", onClick:fn}, "button1");