1# 动态创建组件 2<!--Kit: ArkUI--> 3<!--Subsystem: ArkUI--> 4<!--Owner: @seaside_wu1--> 5<!--Designer: @shiyu_huang--> 6<!--Tester: @TerryTsao--> 7<!--Adviser: @HelloCrease--> 8 9提供在页面中动态添加组件,并为动态添加的组件设置属性与样式的能力。 10 11> **说明:** 12> 13> - 从API version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 14 15 16## createElement 17 18createElement(tag: string): Element 19 20创建一个组件对象。 21 22**参数:** 23 24| 参数名 | 类型 | 必填 | 说明 | 25| ------- | ------------ | ---- | ------- | 26| tag | string | 是 | 组件名称。 | 27 28**返回值:** 29 30| 类型 | 说明 | 31| ----------- | ------------- | 32| Element | 对应tag名称的组件对象。 | 33 34```js 35let newImage = dom.createElement('image') 36``` 37 38 39## setAttribute 40 41setAttribute(name: string, value: string): void 42 43动态设置组件的属性。 44 45**参数:** 46 47| 参数名 | 类型 | 必填 | 说明 | 48| ------- | ------------ | ---- | ------- | 49| name | string | 是 | 属性名称。 | 50| value | string | 是 | 属性值。 | 51 52```js 53newImage.setAttribute('src', 'common/testImage.jpg') 54``` 55 56 57## setStyle 58 59setStyle(name: string, value: string): boolean 60 61动态设置组件的样式。 62 63**参数:** 64 65| 参数名 | 类型 | 必填 | 说明 | 66| ------- | ------------ | ---- | ------- | 67| name | string | 是 | 样式名称。 | 68| value | string | 是 | 样式值。 | 69 70**返回值:** 71 72| 类型 | 说明 | 73| ----------- | ------------- | 74| boolean | 设置成功时返回true,失败时返回false。 | 75 76```js 77newImage.setStyle('width', '120px') 78``` 79 80 81## addChild 82 83addChild(child: Element): void 84 85将动态创建的组件添加到父组件当中。 86 87**参数:** 88 89| 参数名 | 类型 | 必填 | 说明 | 90| ------- | ------------ | ---- | ------- | 91| child | Element | 是 | 组件对象。 | 92 93```js 94newDiv.addChild(newImage) 95``` 96 97 98## 示例 99 100```html 101<!-- xxx.hml --> 102<div class="container"> 103 <div id="parentDiv" class="parent"></div> 104 <button onclick="appendDiv" class="btn">动态创建div</button> 105 <button onclick="appendImage" class="btn">动态创建image到创建的div中</button> 106</div> 107``` 108 109```css 110/* xxx.css */ 111.container { 112 flex-direction: column; 113 align-items: center; 114 width: 100%; 115} 116 117.parent { 118 flex-direction: column; 119} 120 121.btn { 122 width: 70%; 123 height: 60px; 124 margin: 15px; 125} 126``` 127 128```js 129// xxx.js 130let newDiv = null 131let newImage = null 132 133export default { 134 appendDiv() { 135 let parent = this.$element('parentDiv') 136 newDiv = dom.createElement('div') 137 newDiv.setStyle('width', '150px') 138 newDiv.setStyle('height', '150px') 139 newDiv.setStyle('backgroundColor', '#AEEEEE') 140 newDiv.setStyle('marginTop', '15px') 141 parent.addChild(newDiv) 142 }, 143 appendImage() { 144 newImage = dom.createElement('image') 145 newImage.setAttribute('src', 'common/testImage.jpg') 146 newImage.setStyle('width', '120px') 147 newImage.setStyle('height', '120px') 148 newDiv.addChild(newImage) 149 } 150} 151```