1e41f4b71Sopenharmony_ci# Dynamic Component Creation 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ciYou can dynamically add components with specified attributes and styles to pages. 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci> **NOTE** 6e41f4b71Sopenharmony_ci> 7e41f4b71Sopenharmony_ci> This API is supported since API version 8. Updates will be marked with a superscript to indicate their earliest API version. 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ci 10e41f4b71Sopenharmony_ci## createElement 11e41f4b71Sopenharmony_ci 12e41f4b71Sopenharmony_cicreateElement(tag: string): Element 13e41f4b71Sopenharmony_ci 14e41f4b71Sopenharmony_ciCreates a component object. 15e41f4b71Sopenharmony_ci 16e41f4b71Sopenharmony_ci**Parameters** 17e41f4b71Sopenharmony_ci 18e41f4b71Sopenharmony_ci| Name | Type | Mandatory | Description | 19e41f4b71Sopenharmony_ci| ------- | ------------ | ---- | ------- | 20e41f4b71Sopenharmony_ci| tag | string | Yes | Component name.| 21e41f4b71Sopenharmony_ci 22e41f4b71Sopenharmony_ci**Return value** 23e41f4b71Sopenharmony_ci 24e41f4b71Sopenharmony_ci| Type | Description | 25e41f4b71Sopenharmony_ci| ----------- | ------------- | 26e41f4b71Sopenharmony_ci| Element | Component object corresponding to the value of **tag**.| 27e41f4b71Sopenharmony_ci 28e41f4b71Sopenharmony_ci```js 29e41f4b71Sopenharmony_cilet newImage = dom.createElement('image') 30e41f4b71Sopenharmony_ci``` 31e41f4b71Sopenharmony_ci 32e41f4b71Sopenharmony_ci 33e41f4b71Sopenharmony_ci## setAttribute 34e41f4b71Sopenharmony_ci 35e41f4b71Sopenharmony_cisetAttribute(name: string, value: string): void 36e41f4b71Sopenharmony_ci 37e41f4b71Sopenharmony_ciDynamically sets the attributes of this component. 38e41f4b71Sopenharmony_ci 39e41f4b71Sopenharmony_ci**Parameters** 40e41f4b71Sopenharmony_ci 41e41f4b71Sopenharmony_ci| Name | Type | Mandatory | Description | 42e41f4b71Sopenharmony_ci| ------- | ------------ | ---- | ------- | 43e41f4b71Sopenharmony_ci| name | string | Yes | Attribute name.| 44e41f4b71Sopenharmony_ci| value | string | Yes | Attribute value.| 45e41f4b71Sopenharmony_ci 46e41f4b71Sopenharmony_ci```js 47e41f4b71Sopenharmony_cinewImage.setAttribute('src', 'common/testImage.jpg') 48e41f4b71Sopenharmony_ci``` 49e41f4b71Sopenharmony_ci 50e41f4b71Sopenharmony_ci 51e41f4b71Sopenharmony_ci## setStyle 52e41f4b71Sopenharmony_ci 53e41f4b71Sopenharmony_cisetStyle(name: string, value: string): boolean 54e41f4b71Sopenharmony_ci 55e41f4b71Sopenharmony_ciDynamically sets the style of this component. 56e41f4b71Sopenharmony_ci 57e41f4b71Sopenharmony_ci**Parameters** 58e41f4b71Sopenharmony_ci 59e41f4b71Sopenharmony_ci| Name | Type | Mandatory | Description | 60e41f4b71Sopenharmony_ci| ------- | ------------ | ---- | ------- | 61e41f4b71Sopenharmony_ci| name | string | Yes | Style name.| 62e41f4b71Sopenharmony_ci| value | string | Yes | Style value.| 63e41f4b71Sopenharmony_ci 64e41f4b71Sopenharmony_ci**Return value** 65e41f4b71Sopenharmony_ci 66e41f4b71Sopenharmony_ci| Type | Description | 67e41f4b71Sopenharmony_ci| ----------- | ------------- | 68e41f4b71Sopenharmony_ci| boolean | Returns **true** if the setting is successful; returns **false** otherwise.| 69e41f4b71Sopenharmony_ci 70e41f4b71Sopenharmony_ci```js 71e41f4b71Sopenharmony_cinewImage.setStyle('width', '120px') 72e41f4b71Sopenharmony_ci``` 73e41f4b71Sopenharmony_ci 74e41f4b71Sopenharmony_ci 75e41f4b71Sopenharmony_ci## addChild 76e41f4b71Sopenharmony_ci 77e41f4b71Sopenharmony_ciaddChild(child: Element): void 78e41f4b71Sopenharmony_ci 79e41f4b71Sopenharmony_ciAdds a dynamically created component to the parent component. 80e41f4b71Sopenharmony_ci 81e41f4b71Sopenharmony_ci**Parameters** 82e41f4b71Sopenharmony_ci 83e41f4b71Sopenharmony_ci| Name | Type | Mandatory | Description | 84e41f4b71Sopenharmony_ci| ------- | ------------ | ---- | ------- | 85e41f4b71Sopenharmony_ci| child | Element | Yes | Component object.| 86e41f4b71Sopenharmony_ci 87e41f4b71Sopenharmony_ci```js 88e41f4b71Sopenharmony_cinewDiv.addChild(newImage) 89e41f4b71Sopenharmony_ci``` 90e41f4b71Sopenharmony_ci 91e41f4b71Sopenharmony_ci 92e41f4b71Sopenharmony_ci## Example 93e41f4b71Sopenharmony_ci 94e41f4b71Sopenharmony_ci```html 95e41f4b71Sopenharmony_ci<!-- xxx.hml --> 96e41f4b71Sopenharmony_ci<div class="container"> 97e41f4b71Sopenharmony_ci <div id="parentDiv" class="parent"></div> 98e41f4b71Sopenharmony_ci <button onclick="appendDiv" class="btn">Dynamically create a <div> component.</button> 99e41f4b71Sopenharmony_ci <button onclick="appendImage" class="btn">Dynamically create an <image> component and add it to the newly created <div> component.</button> 100e41f4b71Sopenharmony_ci</div> 101e41f4b71Sopenharmony_ci``` 102e41f4b71Sopenharmony_ci 103e41f4b71Sopenharmony_ci```css 104e41f4b71Sopenharmony_ci/* xxx.css */ 105e41f4b71Sopenharmony_ci.container { 106e41f4b71Sopenharmony_ci flex-direction: column; 107e41f4b71Sopenharmony_ci align-items: center; 108e41f4b71Sopenharmony_ci width: 100%; 109e41f4b71Sopenharmony_ci} 110e41f4b71Sopenharmony_ci 111e41f4b71Sopenharmony_ci.parent { 112e41f4b71Sopenharmony_ci flex-direction: column; 113e41f4b71Sopenharmony_ci} 114e41f4b71Sopenharmony_ci 115e41f4b71Sopenharmony_ci.btn { 116e41f4b71Sopenharmony_ci width: 70%; 117e41f4b71Sopenharmony_ci height: 60px; 118e41f4b71Sopenharmony_ci margin: 15px; 119e41f4b71Sopenharmony_ci} 120e41f4b71Sopenharmony_ci``` 121e41f4b71Sopenharmony_ci 122e41f4b71Sopenharmony_ci```js 123e41f4b71Sopenharmony_ci// xxx.js 124e41f4b71Sopenharmony_cilet newDiv = null 125e41f4b71Sopenharmony_cilet newImage = null 126e41f4b71Sopenharmony_ci 127e41f4b71Sopenharmony_ciexport default { 128e41f4b71Sopenharmony_ci appendDiv() { 129e41f4b71Sopenharmony_ci let parent = this.$element('parentDiv') 130e41f4b71Sopenharmony_ci newDiv = dom.createElement('div') 131e41f4b71Sopenharmony_ci newDiv.setStyle('width', '150px') 132e41f4b71Sopenharmony_ci newDiv.setStyle('height', '150px') 133e41f4b71Sopenharmony_ci newDiv.setStyle('backgroundColor', '#AEEEEE') 134e41f4b71Sopenharmony_ci newDiv.setStyle('marginTop', '15px') 135e41f4b71Sopenharmony_ci parent.addChild(newDiv) 136e41f4b71Sopenharmony_ci }, 137e41f4b71Sopenharmony_ci appendImage() { 138e41f4b71Sopenharmony_ci newImage = dom.createElement('image') 139e41f4b71Sopenharmony_ci newImage.setAttribute('src', 'common/testImage.jpg') 140e41f4b71Sopenharmony_ci newImage.setStyle('width', '120px') 141e41f4b71Sopenharmony_ci newImage.setStyle('height', '120px') 142e41f4b71Sopenharmony_ci newDiv.addChild(newImage) 143e41f4b71Sopenharmony_ci } 144e41f4b71Sopenharmony_ci} 145e41f4b71Sopenharmony_ci``` 146