@joyzl/eno 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +353 -343
- package/package.json +1 -1
- package/publish.cmd +0 -1
package/index.js
CHANGED
@@ -1,382 +1,319 @@
|
|
1
1
|
// HTML5 Node Element
|
2
2
|
// Easy Node Object
|
3
|
-
// 提供HTML
|
3
|
+
// 提供HTML标签元素处理与数据对象之间的互操作支持。
|
4
4
|
|
5
5
|
export default {
|
6
6
|
create,
|
7
|
-
|
8
|
-
|
7
|
+
append,
|
8
|
+
replace,
|
9
9
|
select,
|
10
|
-
|
11
|
-
query,
|
12
|
-
on,
|
10
|
+
remove,
|
13
11
|
|
14
12
|
show,
|
15
13
|
hide,
|
16
|
-
stack,
|
17
14
|
toggle,
|
18
15
|
|
19
16
|
gets,
|
20
17
|
sets,
|
18
|
+
|
19
|
+
bind,
|
21
20
|
entity,
|
22
21
|
action,
|
23
22
|
element,
|
24
23
|
|
25
|
-
|
26
|
-
time,
|
27
|
-
datetime
|
24
|
+
query
|
28
25
|
}
|
29
26
|
|
27
|
+
// 这个临时标签用于解析HTML字符串
|
28
|
+
const TEMP = document.createElement("div");
|
29
|
+
|
30
30
|
/**
|
31
|
-
*
|
32
|
-
* @param {
|
33
|
-
|
34
|
-
function show(element) {
|
35
|
-
if (element) {
|
36
|
-
if (element.trim) {
|
37
|
-
show(selects(element));
|
38
|
-
} else
|
39
|
-
if (element.length) {
|
40
|
-
for (let i = 0; i < element.length; i++) {
|
41
|
-
show(element[i]);
|
42
|
-
}
|
43
|
-
} else
|
44
|
-
if (element.nodeType) {
|
45
|
-
element.hidden = false;
|
46
|
-
}
|
47
|
-
}
|
48
|
-
}
|
49
|
-
/**
|
50
|
-
* 隐藏单个/多个元素
|
51
|
-
* @param {Element} element
|
31
|
+
* HTML字符串创建标签元素实例
|
32
|
+
* @param {String} html HTML字符串
|
33
|
+
* @return {Element} 创建的单个/多个标签元素
|
52
34
|
*/
|
53
|
-
function
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
element.
|
65
|
-
|
35
|
+
function create(html) {
|
36
|
+
// 创建元素
|
37
|
+
TEMP.innerHTML = html;
|
38
|
+
let element;
|
39
|
+
if (TEMP.childElementCount == 1) {
|
40
|
+
element = TEMP.children[0];
|
41
|
+
element.remove();
|
42
|
+
} else
|
43
|
+
if (TEMP.childElementCount > 1) {
|
44
|
+
element = new Array();
|
45
|
+
do {
|
46
|
+
element.push(TEMP.children[0]);
|
47
|
+
TEMP.children[0].remove();
|
48
|
+
} while (TEMP.childElementCount > 0);
|
66
49
|
}
|
50
|
+
return element;
|
51
|
+
|
52
|
+
// DocumentFragment
|
67
53
|
}
|
54
|
+
|
68
55
|
/**
|
69
|
-
*
|
70
|
-
* @param {
|
71
|
-
* @param {
|
72
|
-
* @
|
56
|
+
* 创建并添加标签元素
|
57
|
+
* @param {Element} element 标签元素
|
58
|
+
* @param {String} html HTML字符串
|
59
|
+
* @return {Element} 创建的单个/多个标签元素
|
73
60
|
*/
|
74
|
-
function
|
61
|
+
function append(element, html) {
|
75
62
|
if (arguments.length == 1) {
|
76
|
-
//
|
77
|
-
element =
|
78
|
-
if (element.trim) {
|
79
|
-
element = select(element);
|
80
|
-
}
|
81
|
-
if (element.hidden) {
|
82
|
-
element.hidden = false;
|
83
|
-
} else {
|
84
|
-
element.hidden = true;
|
85
|
-
}
|
63
|
+
// append(html);
|
64
|
+
element = document.body;
|
86
65
|
} else
|
87
66
|
if (arguments.length == 2) {
|
88
|
-
//
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
if (element == parent.children[i]) {
|
100
|
-
parent.children[i].hidden = false;
|
101
|
-
} else {
|
102
|
-
parent.children[i].hidden = true;
|
103
|
-
}
|
67
|
+
// append(element,html);
|
68
|
+
element = select(element);
|
69
|
+
} else {
|
70
|
+
return;
|
71
|
+
}
|
72
|
+
if (html.trim) {
|
73
|
+
html = create(html);
|
74
|
+
}
|
75
|
+
if (html.length) {
|
76
|
+
for (let i = 0; i < html.length; i++) {
|
77
|
+
element.appendChild(html[i]);
|
104
78
|
}
|
105
|
-
} else
|
106
|
-
|
107
|
-
// toggle(parent,element,className);
|
108
|
-
|
79
|
+
} else {
|
80
|
+
element.appendChild(html);
|
109
81
|
}
|
110
|
-
|
111
|
-
|
112
|
-
function stack(parent, element, className) {
|
113
|
-
// 单选 增加class/移除其它
|
114
|
-
// 多选 增加class
|
115
|
-
// 增加 class
|
116
|
-
// 移除 class
|
82
|
+
return html;
|
117
83
|
}
|
118
84
|
|
119
85
|
/**
|
120
|
-
*
|
121
|
-
* @param {Element} element
|
122
|
-
* @param {String}
|
86
|
+
* 创建并替换为标签元素
|
87
|
+
* @param {Element} element 标签元素
|
88
|
+
* @param {String} html HTML字符串
|
89
|
+
* @return {Element} 创建的单个/多个标签元素
|
123
90
|
*/
|
124
|
-
function
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
return document.querySelector(selector);
|
91
|
+
function replace(element, html) {
|
92
|
+
if (arguments.length == 2) {
|
93
|
+
element = select(element);
|
94
|
+
} else {
|
95
|
+
return;
|
130
96
|
}
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
node = elements[i].querySelector(selector);
|
145
|
-
if (node) {
|
146
|
-
return node;
|
147
|
-
}
|
97
|
+
if (html.trim) {
|
98
|
+
html = create(html);
|
99
|
+
}
|
100
|
+
if (element.parentElement) {
|
101
|
+
if (html.length) {
|
102
|
+
let item;
|
103
|
+
for (let i = 0; i < html.length; i++) {
|
104
|
+
item = html[i];
|
105
|
+
if (element.className) {
|
106
|
+
item.className += element.className;
|
107
|
+
}
|
108
|
+
if (element.style.cssText) {
|
109
|
+
item.style.cssText += element.style.cssText;
|
148
110
|
}
|
149
111
|
}
|
150
|
-
|
112
|
+
element.replaceWith(html);
|
151
113
|
} else {
|
152
|
-
|
114
|
+
if (element.className) {
|
115
|
+
html.className += element.className;
|
116
|
+
}
|
117
|
+
if (element.style.cssText) {
|
118
|
+
html.style.cssText += element.style.cssText;
|
119
|
+
}
|
120
|
+
element.parentElement.replaceChild(element, html);
|
153
121
|
}
|
154
122
|
}
|
123
|
+
return html;
|
155
124
|
}
|
156
125
|
|
157
126
|
/**
|
158
|
-
*
|
159
|
-
* @param {Element} element
|
160
|
-
* @param {String} selector
|
161
|
-
* @
|
127
|
+
* 在指定范围内/整个文档查找
|
128
|
+
* @param {Element} element 标签元素
|
129
|
+
* @param {String} selector 筛选字符
|
130
|
+
* @return {Element} 匹配的单个/多个标签元素
|
162
131
|
*/
|
163
|
-
function
|
164
|
-
// 仅指定1个参数
|
132
|
+
function select(element, selector) {
|
165
133
|
if (arguments.length == 1) {
|
166
|
-
//
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
134
|
+
// 仅指定1个参数
|
135
|
+
// select(element/selector);
|
136
|
+
if (element.trim) {
|
137
|
+
element = document.querySelectorAll(element);
|
138
|
+
if (element.length == 0) {
|
139
|
+
return null;
|
140
|
+
}
|
141
|
+
if (element.length == 1) {
|
142
|
+
return element[0];
|
143
|
+
}
|
144
|
+
return Array.from(element);
|
145
|
+
} else
|
146
|
+
if (element.nodeType) {
|
147
|
+
return element;
|
148
|
+
}
|
149
|
+
} else
|
150
|
+
if (arguments.length == 2) {
|
151
|
+
// 指定了2个参数
|
172
152
|
// select(element, selector);
|
173
|
-
let nodes, items = new Array();
|
174
153
|
if (element.trim) {
|
175
154
|
element = document.querySelectorAll(element);
|
155
|
+
} else
|
156
|
+
if (element.nodeType) {
|
157
|
+
element = element.querySelectorAll(selector);
|
158
|
+
if (element.length == 0) {
|
159
|
+
return null;
|
160
|
+
}
|
161
|
+
if (element.length == 1) {
|
162
|
+
return element[0];
|
163
|
+
}
|
164
|
+
return Array.from(element);
|
176
165
|
}
|
177
|
-
if (
|
166
|
+
if (element.length) {
|
167
|
+
let nodes, items = new Array();
|
178
168
|
for (let i = 0; i < element.length; i++) {
|
179
169
|
nodes = element[i].querySelectorAll(selector);
|
180
|
-
|
181
|
-
|
182
|
-
items.push(nodes[i]);
|
183
|
-
}
|
170
|
+
for (let n = 0; n < nodes.length; n++) {
|
171
|
+
items.push(nodes[n]);
|
184
172
|
}
|
185
173
|
}
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
}
|
174
|
+
if (items.length == 0) {
|
175
|
+
return null;
|
176
|
+
}
|
177
|
+
if (items.length == 1) {
|
178
|
+
return items[0];
|
192
179
|
}
|
180
|
+
return items;
|
193
181
|
}
|
194
|
-
return items;
|
195
182
|
}
|
196
183
|
}
|
197
184
|
|
198
185
|
/**
|
199
|
-
*
|
200
|
-
* @param {Element} element
|
201
|
-
* @param {String} selector
|
202
|
-
* @
|
203
|
-
* @param {Function} listener
|
186
|
+
* 从文档移除
|
187
|
+
* @param {Element} element 标签元素
|
188
|
+
* @param {String} selector 筛选字符
|
189
|
+
* @return {Element} 移除的单个/多个标签元素
|
204
190
|
*/
|
205
|
-
function
|
206
|
-
if (arguments.length ==
|
207
|
-
|
208
|
-
listener = evt;
|
209
|
-
evt = selector;
|
210
|
-
if (element.trim) {
|
211
|
-
element = selects(element);
|
212
|
-
}
|
191
|
+
function remove(element, selector) {
|
192
|
+
if (arguments.length == 1) {
|
193
|
+
element = select(element);
|
213
194
|
} else
|
214
|
-
if (arguments.length ==
|
215
|
-
|
216
|
-
element = selects(element, selector);
|
195
|
+
if (arguments.length == 2) {
|
196
|
+
element = select(element, selector);
|
217
197
|
} else {
|
218
198
|
return;
|
219
199
|
}
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
200
|
+
if (element) {
|
201
|
+
if (element.length) {
|
202
|
+
for (let i = 0; i < element.length; i++) {
|
203
|
+
element[i].remove();
|
204
|
+
}
|
205
|
+
} else {
|
206
|
+
element.remove();
|
224
207
|
}
|
225
|
-
} else {
|
226
|
-
element.addEventListener(evt, listener);
|
227
208
|
}
|
209
|
+
return element;
|
228
210
|
}
|
229
211
|
|
230
|
-
// 这个临时标签用于解析HTML字符串
|
231
|
-
const TEMP = document.createElement("div");
|
232
|
-
|
233
212
|
/**
|
234
|
-
*
|
235
|
-
*
|
236
|
-
*
|
237
|
-
*
|
238
|
-
* @param {String} parent
|
239
|
-
* @param {String} html 字符串形式的HTML内容
|
240
|
-
* @param {String} place append/replace
|
241
|
-
* @return {Element} 单个/多个元素
|
213
|
+
* 隐藏单个/多个元素
|
214
|
+
* @param {Element} element 标签元素
|
215
|
+
* @param {String} selector 筛选字符
|
216
|
+
* @return {Element} 隐藏的单个/多个标签元素
|
242
217
|
*/
|
243
|
-
function
|
244
|
-
if (arguments.length == 0) {
|
245
|
-
// create();
|
246
|
-
return null;
|
247
|
-
} else
|
218
|
+
function hide(element, selector) {
|
248
219
|
if (arguments.length == 1) {
|
249
|
-
|
250
|
-
html = parent;
|
251
|
-
parent = null;
|
220
|
+
element = select(element);
|
252
221
|
} else
|
253
222
|
if (arguments.length == 2) {
|
254
|
-
|
255
|
-
place = 'append';
|
256
|
-
if (parent) {
|
257
|
-
if (parent.nodeType) {} else {
|
258
|
-
parent = select(parent);
|
259
|
-
}
|
260
|
-
} else {
|
261
|
-
parent = document.body;
|
262
|
-
}
|
263
|
-
} else
|
264
|
-
if (arguments.length == 3) {
|
265
|
-
// create(parent,html,place);
|
266
|
-
if (parent) {
|
267
|
-
if (parent.nodeType) {} else {
|
268
|
-
parent = select(parent);
|
269
|
-
}
|
270
|
-
} else {
|
271
|
-
parent = document.body;
|
272
|
-
}
|
273
|
-
}
|
274
|
-
|
275
|
-
// 创建元素
|
276
|
-
TEMP.innerHTML = html;
|
277
|
-
let element;
|
278
|
-
if (TEMP.childElementCount == 1) {
|
279
|
-
element = TEMP.children[0];
|
280
|
-
element.remove();
|
281
|
-
} else
|
282
|
-
if (TEMP.childElementCount > 1) {
|
283
|
-
element = new Array();
|
284
|
-
for (let i = 0; i < TEMP.childElementCount; ++i) {
|
285
|
-
element.push(TEMP.children[i]);
|
286
|
-
TEMP.children[i].remove();
|
287
|
-
}
|
223
|
+
element = select(element, selector);
|
288
224
|
} else {
|
289
|
-
return
|
225
|
+
return;
|
290
226
|
}
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
parent.appendChild(element[i]);
|
298
|
-
}
|
299
|
-
} else {
|
300
|
-
parent.appendChild(element);
|
301
|
-
}
|
302
|
-
} else
|
303
|
-
if ("replace" === place) {
|
304
|
-
if (parent.parentElement) {
|
305
|
-
if (element.length) {
|
306
|
-
// 待验证
|
307
|
-
parent.parentElement.replaceWith(element);
|
308
|
-
} else {
|
309
|
-
parent.parentElement.replaceChild(parent, element);
|
310
|
-
}
|
227
|
+
if (element) {
|
228
|
+
if (element.length) {
|
229
|
+
for (let i = 0; i < element.length; i++) {
|
230
|
+
element[i].hidden = true;
|
231
|
+
element[i].__DISPLAY = element[i].style.display
|
232
|
+
element[i].style.display = "none";
|
311
233
|
}
|
312
234
|
} else {
|
313
|
-
|
235
|
+
element.hidden = true;
|
236
|
+
element.__DISPLAY = element[i].style.display
|
237
|
+
// display:flex 导致 hidden 属性失效而不会隐藏
|
238
|
+
element.style.display = "none";
|
314
239
|
}
|
315
240
|
}
|
316
241
|
return element;
|
317
242
|
}
|
318
243
|
|
319
244
|
/**
|
320
|
-
*
|
321
|
-
* @param {Element} element
|
245
|
+
* 显示单个/多个元素
|
246
|
+
* @param {Element} element 标签元素
|
247
|
+
* @param {String} selector 筛选字符
|
248
|
+
* @return {Element} 显示的单个/多个标签元素
|
322
249
|
*/
|
323
|
-
function
|
250
|
+
function show(element, selector) {
|
251
|
+
if (arguments.length == 1) {
|
252
|
+
element = select(element);
|
253
|
+
} else
|
254
|
+
if (arguments.length == 2) {
|
255
|
+
element = select(element, selector);
|
256
|
+
} else {
|
257
|
+
return;
|
258
|
+
}
|
324
259
|
if (element) {
|
325
|
-
if (element.trim) {
|
326
|
-
// remove("p");
|
327
|
-
element = selects(element);
|
328
|
-
}
|
329
|
-
if (element.tagName) {
|
330
|
-
// remove(document.getElementById("test"));
|
331
|
-
element.remove();
|
332
|
-
} else
|
333
260
|
if (element.length) {
|
334
|
-
// remove(["p","span"]);
|
335
|
-
// remove(document.getElementByTagName("div"));
|
336
261
|
for (let i = 0; i < element.length; i++) {
|
337
|
-
|
262
|
+
element[i].hidden = false;
|
263
|
+
element[i].style.display = element[i].__DISPLAY;
|
338
264
|
}
|
265
|
+
} else {
|
266
|
+
element.hidden = false;
|
267
|
+
element.style.display = element.__DISPLAY;
|
339
268
|
}
|
340
269
|
}
|
270
|
+
return element;
|
341
271
|
}
|
342
272
|
|
343
273
|
/**
|
344
|
-
*
|
345
|
-
*
|
274
|
+
* 切换指定元素显示,同级其余元素隐藏;
|
275
|
+
* 如果指定样式类名,则当前原始添加样式类,其余元素移除样式类
|
276
|
+
* @param {Element} element 标签元素
|
277
|
+
* @param {String} selector 筛选字符
|
278
|
+
* @param {String} className 类名称
|
279
|
+
* @return {Element} 显示的单个/多个标签元素
|
346
280
|
*/
|
347
|
-
function
|
281
|
+
function toggle(element, selector, className) {
|
348
282
|
if (arguments.length == 1) {
|
349
|
-
//
|
350
|
-
|
351
|
-
|
352
|
-
// ?name1=value1&name2=value2
|
353
|
-
url = window.location.search;
|
354
|
-
}
|
283
|
+
// toggle(element)
|
284
|
+
element = select(element);
|
285
|
+
} else
|
355
286
|
if (arguments.length == 2) {
|
356
|
-
//
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
287
|
+
// toggle(element,selector)
|
288
|
+
// toggle(element,className)
|
289
|
+
element = select(element, selector);
|
290
|
+
} else
|
291
|
+
if (arguments.length == 3) {
|
292
|
+
// toggle(element,selector,className)
|
293
|
+
element = select(element, selector);
|
294
|
+
} else {
|
295
|
+
return;
|
363
296
|
}
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
297
|
+
if (element) {
|
298
|
+
const parent = element.parentElement;
|
299
|
+
if (className) {
|
300
|
+
for (let i = 0; i < parent.children.length; i++) {
|
301
|
+
parent.children[i].classList.remove(className);
|
302
|
+
if (element == parent.children[i]) {
|
303
|
+
parent.children[i].classList.add(className);
|
304
|
+
}
|
305
|
+
}
|
306
|
+
} else {
|
307
|
+
for (let i = 0; i < parent.children.length; i++) {
|
308
|
+
if (element == parent.children[i]) {
|
309
|
+
show(parent.children[i]);
|
310
|
+
} else {
|
311
|
+
hide(parent.children[i]);
|
374
312
|
}
|
375
|
-
return url.substring(start);
|
376
313
|
}
|
377
314
|
}
|
378
315
|
}
|
379
|
-
return
|
316
|
+
return element;
|
380
317
|
}
|
381
318
|
|
382
319
|
// 默认转换函数
|
@@ -384,16 +321,34 @@ function defaultConverter(element, parameter, name) {}
|
|
384
321
|
|
385
322
|
/**
|
386
323
|
* 从指定元素获取值以JSON对象返回{name:value}
|
387
|
-
* @param {Element} element
|
324
|
+
* @param {Element} element 标签元素
|
325
|
+
* @param {String} selector 筛选字符
|
388
326
|
* @param {Function} converter 转换
|
389
|
-
* @
|
327
|
+
* @return {Object} {name1:value1,name2:value2,...}
|
390
328
|
*/
|
391
|
-
function gets(element, converter = defaultConverter) {
|
392
|
-
if (
|
393
|
-
|
394
|
-
|
329
|
+
function gets(element, selector, converter = defaultConverter) {
|
330
|
+
if (arguments.length == 1) {
|
331
|
+
// gets(element)
|
332
|
+
element = select(element);
|
333
|
+
} else
|
334
|
+
if (arguments.length == 2) {
|
335
|
+
// gets(element,selector)
|
336
|
+
// gets(element,converter)
|
337
|
+
if (selector.trim) {
|
338
|
+
element = select(element, selector);
|
339
|
+
} else {
|
340
|
+
element = select(element);
|
341
|
+
converter = selector;
|
395
342
|
}
|
396
|
-
|
343
|
+
} else
|
344
|
+
if (arguments.length == 3) {
|
345
|
+
// gets(element,selector,converter)
|
346
|
+
element = select(element, selector);
|
347
|
+
} else {
|
348
|
+
return;
|
349
|
+
}
|
350
|
+
if (element) {
|
351
|
+
if (element.length) {
|
397
352
|
let parameter = {},
|
398
353
|
parameters = new Array();
|
399
354
|
for (let i = 0; i < element.length; i++) {
|
@@ -411,39 +366,41 @@ function gets(element, converter = defaultConverter) {
|
|
411
366
|
}
|
412
367
|
}
|
413
368
|
}
|
369
|
+
|
414
370
|
/**
|
415
|
-
* 从指定JSON
|
416
|
-
* @param {Element} element
|
417
|
-
* @param {
|
418
|
-
* @param {
|
419
|
-
* @
|
371
|
+
* 从指定JSON对象设置元素值,以name属性作为标识
|
372
|
+
* @param {Element} element 标签元素
|
373
|
+
* @param {String} selector 筛选字符
|
374
|
+
* @param {Object} parameter 数据对象
|
375
|
+
* @param {Function} converter 数据转换
|
376
|
+
* @return {Element} 设置的单个/多个标签元素
|
420
377
|
*/
|
421
|
-
function sets(element, parameter, converter = defaultConverter) {
|
422
|
-
if (
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
378
|
+
function sets(element, selector, parameter, converter = defaultConverter) {
|
379
|
+
if (arguments.length == 2) {
|
380
|
+
// sets(element,parameter)
|
381
|
+
element = select(element);
|
382
|
+
parameter = selector;
|
383
|
+
} else
|
384
|
+
if (arguments.length == 3) {
|
385
|
+
// sets(element,selector,parameter)
|
386
|
+
// sets(element,parameter,converter)
|
387
|
+
if (selector.trim) {
|
388
|
+
element = select(element, selector);
|
389
|
+
} else {
|
390
|
+
element = select(element);
|
391
|
+
converter = parameter;
|
392
|
+
parameter = selector;
|
434
393
|
}
|
435
|
-
|
394
|
+
} else
|
395
|
+
if (arguments.length == 4) {
|
396
|
+
// sets(element,selector,parameter,converter)
|
397
|
+
element = select(element, selector);
|
398
|
+
} else {
|
399
|
+
return;
|
400
|
+
}
|
401
|
+
if (element) {
|
436
402
|
if (parameter) {
|
437
403
|
if (Array.isArray(parameter)) {
|
438
|
-
// if (element.nodeType) {
|
439
|
-
// if (element.childElementCount) {
|
440
|
-
// element = element.children;
|
441
|
-
// } else {
|
442
|
-
// // ???
|
443
|
-
// return null;
|
444
|
-
// }
|
445
|
-
// }
|
446
|
-
|
447
404
|
let i = 0;
|
448
405
|
// 利用ENO_SET记录并判定是否首次
|
449
406
|
if (element.ENO_SETS) {
|
@@ -572,6 +529,7 @@ function sets(element, parameter, converter = defaultConverter) {
|
|
572
529
|
}
|
573
530
|
}
|
574
531
|
}
|
532
|
+
|
575
533
|
/**
|
576
534
|
* 获取元素值
|
577
535
|
* <input name="AAA" value="123"/>
|
@@ -601,6 +559,7 @@ function get(element, parameter, converter) {
|
|
601
559
|
}
|
602
560
|
}
|
603
561
|
}
|
562
|
+
|
604
563
|
/**
|
605
564
|
* 设置元素值
|
606
565
|
* <input name="AAA" value="123"/>
|
@@ -630,6 +589,7 @@ function set(element, parameter, converter) {
|
|
630
589
|
}
|
631
590
|
}
|
632
591
|
}
|
592
|
+
|
633
593
|
/**
|
634
594
|
* 根据名称获取对象值
|
635
595
|
* @param {Object} o 对象
|
@@ -657,6 +617,7 @@ function vale(o, name) {
|
|
657
617
|
}
|
658
618
|
return o;
|
659
619
|
}
|
620
|
+
|
660
621
|
/**
|
661
622
|
* 根据名称设置对象值
|
662
623
|
* @param {Object} o
|
@@ -678,6 +639,7 @@ function valu(o, name, value) {
|
|
678
639
|
o[name[i]] = value;
|
679
640
|
return o;
|
680
641
|
}
|
642
|
+
|
681
643
|
/**
|
682
644
|
* 转换为字符串值
|
683
645
|
* @param {Object} o
|
@@ -692,8 +654,48 @@ function text(o) {
|
|
692
654
|
}
|
693
655
|
return "";
|
694
656
|
}
|
657
|
+
|
658
|
+
/**
|
659
|
+
* 绑定事件
|
660
|
+
* @param {Element} element 标签元素
|
661
|
+
* @param {String} selector 筛选字符
|
662
|
+
* @param {String} eventName 事件名称
|
663
|
+
* @param {Function} listener 事件处理
|
664
|
+
* @example bind(element,eventName,listener);
|
665
|
+
* @example bind(element,selector,eventName,listener);
|
666
|
+
* @return {Element} 绑定事件的标签元素
|
667
|
+
*/
|
668
|
+
function bind(element, selector, eventName, listener) {
|
669
|
+
if (arguments.length == 3) {
|
670
|
+
// bind(element,eventName,listener);
|
671
|
+
element = selects(element);
|
672
|
+
listener = eventName;
|
673
|
+
eventName = selector;
|
674
|
+
} else
|
675
|
+
if (arguments.length == 4) {
|
676
|
+
// bind(element,selector,eventName,listener);
|
677
|
+
element = selects(element, selector);
|
678
|
+
} else {
|
679
|
+
return;
|
680
|
+
}
|
681
|
+
if (element) {
|
682
|
+
if (element.length) {
|
683
|
+
for (let i = 0; i < element.length; i++) {
|
684
|
+
element[i].addEventListener(eventName, listener);
|
685
|
+
}
|
686
|
+
} else {
|
687
|
+
element.addEventListener(eventName, listener);
|
688
|
+
}
|
689
|
+
}
|
690
|
+
return element;
|
691
|
+
}
|
692
|
+
|
695
693
|
/**
|
696
694
|
* 根据事件或元素获取由sets关联的实体对象
|
695
|
+
* @example entity(event);
|
696
|
+
* @example entity(element);
|
697
|
+
* @example entity(element,selector);
|
698
|
+
* @return {Object} 标签元素关联的数据对象
|
697
699
|
*/
|
698
700
|
function entity(e, selector) {
|
699
701
|
if (arguments.length == 1) {
|
@@ -722,6 +724,7 @@ function entity(e, selector) {
|
|
722
724
|
}
|
723
725
|
return null;
|
724
726
|
}
|
727
|
+
|
725
728
|
/**
|
726
729
|
* 根据事件或元素获取属性指定的动作
|
727
730
|
* @param {Event} e
|
@@ -744,9 +747,11 @@ function action(e, a) {
|
|
744
747
|
}
|
745
748
|
return false;
|
746
749
|
}
|
750
|
+
|
747
751
|
/**
|
748
752
|
* 根据事件获取绑定实体的元素
|
749
753
|
* @param {Event} e
|
754
|
+
* @return {Element} 标签元素关联的数据对象
|
750
755
|
*/
|
751
756
|
function element(e) {
|
752
757
|
if (e && e.target) {
|
@@ -767,36 +772,41 @@ function element(e) {
|
|
767
772
|
}
|
768
773
|
|
769
774
|
/**
|
770
|
-
*
|
775
|
+
* 读取 URL 中的 Query String 参数值
|
776
|
+
* @param {String} name 参数名
|
777
|
+
* @return {String} 参数值
|
771
778
|
*/
|
772
|
-
function
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
|
777
|
-
|
778
|
-
|
779
|
+
function query(url, name) {
|
780
|
+
if (arguments.length == 1) {
|
781
|
+
// getQueryString(name)
|
782
|
+
name = url;
|
783
|
+
// window.location.search 返回从问号?开始的URL查询部分
|
784
|
+
// ?name1=value1&name2=value2
|
785
|
+
url = window.location.search;
|
786
|
+
}
|
787
|
+
if (arguments.length == 2) {
|
788
|
+
// getQueryString(url, name)
|
789
|
+
let index = url.indexof("?");
|
790
|
+
if (index > 0) {
|
791
|
+
url = url.substring(index);
|
792
|
+
} else {
|
793
|
+
return null;
|
794
|
+
}
|
795
|
+
}
|
779
796
|
|
780
|
-
|
781
|
-
|
782
|
-
|
783
|
-
|
784
|
-
|
785
|
-
|
786
|
-
|
787
|
-
|
788
|
-
|
789
|
-
}
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
const year = now.getFullYear();
|
796
|
-
const month = now.getMonth() + 1 /*月份从0开始,需要加1*/ ;
|
797
|
-
const day = now.getDate();
|
798
|
-
const hours = now.getHours();
|
799
|
-
const minutes = now.getMinutes();
|
800
|
-
const seconds = now.getSeconds();
|
801
|
-
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
|
797
|
+
if (url) {
|
798
|
+
let start = url.indexOf(name);
|
799
|
+
if (start >= 0) {
|
800
|
+
start += name.length;
|
801
|
+
if (url.charAt(start) == '=') {
|
802
|
+
start++;
|
803
|
+
let end = url.indexOf('&', start);
|
804
|
+
if (end >= 0) {
|
805
|
+
return url.substring(start, end);
|
806
|
+
}
|
807
|
+
return url.substring(start);
|
808
|
+
}
|
809
|
+
}
|
810
|
+
}
|
811
|
+
return null;
|
802
812
|
}
|
package/package.json
CHANGED
package/publish.cmd
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
npm publish --access public
|