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