使用Javascript函数创建DOJO按钮,导致创建的按钮发生冲突

2ledvvac  于 2022-12-20  发布在  Dojo
关注(0)|答案(3)|浏览(356)

我为我的英语错误道歉,我是巴西人。
我有一个网站与DOJO图书馆,我用它在许多事情。
我有一些困难,以创建按钮的javascript。
我写了一个函数来创建按钮,它正在工作,创建按钮。

但是,当创建新按钮时,以前的按钮丢失事件“onclick”。

可在此处查看:http://jsbin.com/xuzevi/edit?html,js,output
为了创建按钮,我使用了以下代码:

require([ 'dojo/dom', 'dojo/parser', 'dijit/form/Button', 'dojo/domReady!' ], 
        function( dom, parser, Button)
        {
            var div_Compra = document.getElementById(p_Div);
            if( ! div_Compra ) { console.log('ERRO - div_Compra: '+p_Div); return false; }

            var botao = new Button({ label: '' });
            if( ! botao ) { console.log('ERRO - botao'); return false; }

            botao.startup();
            botao.set('iconClass', 'dijitEditorIcon dijitEditorIconSelectAll');
            botao.set('showLabel', false);
            botao.placeAt(div_Compra);
            botao.on('click', function() { Mensagem(p_Indice); }); 
        }
);

谢谢。

sy5wg1nm

sy5wg1nm1#

问题不在上面提到的代码中。主要问题是你在CPR_Compra.Cadastro方法中使用innerHTML。你不能认为dojo dijit只是HTML标记,它们是DOM对象,节点等等。当你更新div_Cadastro.innerHTML时,它破坏了wigit,但保留了HTML标记,所以onclick事件停止工作。
不要使用innerHTML,而是使用appendChild,这样dom节点就不会被破坏。下面是JSBin的工作实现。
http://jsbin.com/butacuquza/edit?js,output

uqzxnwby

uqzxnwby2#

https://davidwalsh.name/dojo-widget开始

  • 要以编程方式创建小部件,您需要创建DOM节点,作为未来小部件的占位符

读一下这个https://davidwalsh.name/dojo-behavior

  • 使用dojo.behavior创建小部件
  • 小部件创建是使用dojo.behavior的更好机会:
wvyml7n5

wvyml7n53#

对于其他像我一样来到这里的人,还有一些链接:
HTML DOM appendChild()方法

Node.appendChild()方法将节点添加到指定父节点的子节点列表的末尾。

相关问题