在 Dojo 中的现有 div 中创建 <p> 元素

Create <p> element inside existing div in Dojo

我的 HTML 文档中已经存在一个 <div> 元素。 我想使用 Dojo 向其中动态添加 <p> 元素。

我对 domConstruct create 与 place 与 toDom 方法感到困惑。我不想创建更多 divs,我只想在现有 div.

中放置一个段落元素

我该怎么做?

目前我有这个,但我假设它似乎没有用,因为 create 方法用于创建 divs 而不是其他类型的元素:

var errorPopup = dom.byId('error-dialog');
for (var i = 0; i < errorMessages.length; i++) {
                      var eMessage = domConstruct.create("<p>'"+errorMessages[i]+"'</p>");
                      errorPopup.appendChild(eMessage);
                  }

我仍然不完全确定为什么 create 方法不起作用(除非我最初的预感是正确的)但我让它与 place 方法一起工作。

for (var i = 0; i < errorMessages.length; i++) {
                      var eMessage = domConstruct.place("<p>'"+errorMessages[i]+"'</p>", "error-dialog");
                  }

可以直接使用dojo/domConstruct,

它有三个参数domConstruct.create(arg1,arg2,arg3)

  1. arg1 : Dom 要创建的元素
  2. arg2 : json 参数对象(创建的元素的属性,也是 innerHTML, id , class ...)
  3. arg3 : 您创建的元素的 domNode 或 id 应该放在

require([ "dojo/dom-construct", "dojo/dom", "dojo/ready"], function(domConstruct, dom, ready) {
  ready(function() {
    for (i = 0; i < 5; i++) {
      var elment = domConstruct.create('p', {
                       'id': 'tooltipExample' + i,
                         'innerHTML': "Error number " + i
                        }, 
                   "error-dialog");
    }
  });
});
<script type="text/javascript">
  dojoConfig = {
    isDebug: true,
    async: true,
    parseOnLoad: true
  }
</script>

<script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>
<link href="//ajax.googleapis.com/ajax/libs/dojo/1.8.3/dijit/themes/claro/claro.css" rel="stylesheet" />

<div id="error-dialog"></div>

虽然问题得到了回答,只是为了促进没有for循环的解决方案,我会post在这里:

const errors = [
  'Error 1',
  'Error 2',
  'Error 3'
]


require(['dojo/dom-construct'], function(dc) {
  function wrap(error) {
    return '<p>' + error + '</p>'
    //return `<p>${error}</p> also can be used
  }
  
  function place (el) {
    dc.place(el, 'errors')
  }
  
  errors
    .map(wrap)
    .forEach(place)
})
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>

<div id='errors'></div>