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

Creating DOJO buttons with Javascript function causing conflicts in buttons created

本文关键字:按钮 创建 冲突 Javascript 函数 DOJO 使用      更新时间:2023-09-26

我为英语中的任何错误道歉,我是巴西人。

我有一个带有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); }); 
        }
);

谢谢。

问题不在上面提到的代码中。主要问题是你在CPR_Compra.Cadastro方法中使用了innerHTML。您不能认为dojo dijit只是HTML标记,它们是DOM对象、节点等等。当你更新div_Cadastro.innerHTML时,它破坏了wigit,但保留了HTML标签,因此onclick事件停止工作。

appendChild代替innerHTML,这样dom节点就不会被破坏。下面是JSBin的工作实现。

http://jsbin.com/butacuquza/edit?js,输出

from https://davidwalsh.name/dojo-widget

  • 要以编程方式创建小部件,需要创建DOM节点,这些节点充当未来小部件
  • 的占位符。

和阅读这个:https://davidwalsh.name/dojo-behavior

  • 使用dojo.behavior创建小部件

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

对于像我一样来到这里的人,更多的链接:

HTML DOM appendChild()方法

  • https://www.w3schools.com/jsref/met_node_appendchild.asp

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

  • https://developer.mozilla.org/en-US/docs/Web/API/Node/appendChild