Deployed 3165ca1 to 5.4 with MkDocs 1.1.2 and mike 1.0.0
[GitHub/WoltLab/woltlab.github.io.git] / 5.4 / javascript / helper-functions / index.html
CommitLineData
45ca63d0
TD
1
2<!doctype html>
3<html lang="en" class="no-js">
4 <head>
5
6 <meta charset="utf-8">
7 <meta name="viewport" content="width=device-width,initial-scale=1">
8
9
10
11
c8b4da45
WG
12 <link rel="canonical" href="https://docs.woltlab.com/5.4/javascript/helper-functions/">
13
fb962f09 14 <link rel="icon" href="../../assets/default.favicon.ico">
c476b0e3 15 <meta name="generator" content="mkdocs-1.1.2, mkdocs-material-7.1.3">
45ca63d0
TD
16
17
18
19 <title>Helper Functions - WoltLab Suite Documentation</title>
20
21
22
c476b0e3 23 <link rel="stylesheet" href="../../assets/stylesheets/main.e35208c4.min.css">
45ca63d0
TD
24
25
fb962f09 26 <link rel="stylesheet" href="../../assets/stylesheets/palette.ef6f36e2.min.css">
45ca63d0
TD
27
28
29
30 <meta name="theme-color" content="#009485">
31
32
33
34
35
fd8430cb
WG
36
37
45ca63d0
TD
38
39
40 <link rel="stylesheet" href="../../stylesheets/extra.css">
41
42
43
44
45
46 </head>
47
48
49
50
51
52
53
54 <body dir="ltr" data-md-color-scheme="" data-md-color-primary="teal" data-md-color-accent="">
45ca63d0
TD
55
56
fb962f09
WG
57 <script>function __prefix(e){return new URL("../..",location).pathname+"."+e}function __get(e,t=localStorage){return JSON.parse(t.getItem(__prefix(e)))}</script>
58
45ca63d0
TD
59 <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
60 <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
61 <label class="md-overlay" for="__drawer"></label>
62 <div data-md-component="skip">
63
64
65 <a href="#javascript-helper-functions" class="md-skip">
66 Skip to content
67 </a>
68
69 </div>
70 <div data-md-component="announce">
71
72 <aside class="md-announce">
73 <div class="md-announce__inner md-grid md-typeset">
74
75 <a href="https://www.woltlab.com">Back to <strong>woltlab.com</strong></a>
76
77 </div>
78 </aside>
79
80 </div>
81
fb962f09 82 <header class="md-header" data-md-component="header">
45ca63d0 83 <nav class="md-header__inner md-grid" aria-label="Header">
fb962f09 84 <a href="../.." title="WoltLab Suite Documentation" class="md-header__button md-logo" aria-label="WoltLab Suite Documentation" data-md-component="logo">
45ca63d0
TD
85
86 <img src="../../assets/logo.png" alt="logo">
87
88 </a>
89 <label class="md-header__button md-icon" for="__drawer">
90 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
91 </label>
92 <div class="md-header__title" data-md-component="header-title">
93 <div class="md-header__ellipsis">
94 <div class="md-header__topic">
95 <span class="md-ellipsis">
96 WoltLab Suite Documentation
97 </span>
98 </div>
99 <div class="md-header__topic" data-md-component="header-topic">
100 <span class="md-ellipsis">
101
102 Helper Functions
103
104 </span>
105 </div>
106 </div>
45ca63d0
TD
107 </div>
108
fb962f09
WG
109
110
a3639e76
WG
111 <label class="md-header__button md-icon" for="__search">
112 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
113 </label>
114
115<div class="md-search" data-md-component="search" role="dialog">
116 <label class="md-search__overlay" for="__search"></label>
117 <div class="md-search__inner" role="search">
118 <form class="md-search__form" name="search">
119 <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" data-md-state="active" required>
120 <label class="md-search__icon md-icon" for="__search">
121 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
122 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
123 </label>
124 <button type="reset" class="md-search__icon md-icon" aria-label="Clear" tabindex="-1">
fb962f09 125 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
a3639e76
WG
126 </button>
127 </form>
128 <div class="md-search__output">
129 <div class="md-search__scrollwrap" data-md-scrollfix>
130 <div class="md-search-result" data-md-component="search-result">
131 <div class="md-search-result__meta">
132 Initializing search
133 </div>
134 <ol class="md-search-result__list"></ol>
135 </div>
136 </div>
137 </div>
138 </div>
139</div>
140
45ca63d0 141
7124f4cb
WG
142 <div class="md-header__source">
143
144<a href="https://github.com/WoltLab/docs.woltlab.com/" title="Go to repository" class="md-source" data-md-component="source">
145 <div class="md-source__icon md-icon">
146
fb962f09 147 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
7124f4cb
WG
148 </div>
149 <div class="md-source__repository">
150 GitHub
151 </div>
152</a>
153 </div>
154
45ca63d0
TD
155 </nav>
156</header>
157
158 <div class="md-container" data-md-component="container">
159
160
161
162
163 <main class="md-main" data-md-component="main">
164 <div class="md-main__inner md-grid">
165
166
167
168 <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
169 <div class="md-sidebar__scrollwrap">
170 <div class="md-sidebar__inner">
171
172
173
45ca63d0
TD
174<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
175 <label class="md-nav__title" for="__drawer">
fb962f09 176 <a href="../.." title="WoltLab Suite Documentation" class="md-nav__button md-logo" aria-label="WoltLab Suite Documentation" data-md-component="logo">
45ca63d0
TD
177
178 <img src="../../assets/logo.png" alt="logo">
179
180 </a>
181 WoltLab Suite Documentation
182 </label>
183
7124f4cb
WG
184 <div class="md-nav__source">
185
186<a href="https://github.com/WoltLab/docs.woltlab.com/" title="Go to repository" class="md-source" data-md-component="source">
187 <div class="md-source__icon md-icon">
188
fb962f09 189 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
7124f4cb
WG
190 </div>
191 <div class="md-source__repository">
192 GitHub
193 </div>
194</a>
195 </div>
196
45ca63d0
TD
197 <ul class="md-nav__list" data-md-scrollfix>
198
199
200
201
202
203
204
205
206 <li class="md-nav__item">
207 <a href="../../getting-started/" class="md-nav__link">
208 Getting Started
209 </a>
210 </li>
211
212
213
214
215
216
217
218
219
220
221
222 <li class="md-nav__item md-nav__item--nested">
223
224
225 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2" type="checkbox" id="__nav_2" >
226
227 <label class="md-nav__link" for="__nav_2">
228 PHP API
229 <span class="md-nav__icon md-icon"></span>
230 </label>
231 <nav class="md-nav" aria-label="PHP API" data-md-level="1">
232 <label class="md-nav__title" for="__nav_2">
233 <span class="md-nav__icon md-icon"></span>
234 PHP API
235 </label>
236 <ul class="md-nav__list" data-md-scrollfix>
237
238
239
240
241
242 <li class="md-nav__item">
243 <a href="../../php/pages/" class="md-nav__link">
244 Pages
245 </a>
246 </li>
247
248
249
250
251
252
253
254 <li class="md-nav__item">
255 <a href="../../php/database-objects/" class="md-nav__link">
256 Database Objects
257 </a>
258 </li>
259
260
261
262
263
264
265
266 <li class="md-nav__item">
267 <a href="../../php/database-access/" class="md-nav__link">
268 Database Access
269 </a>
270 </li>
271
272
273
274
275
276
277
278 <li class="md-nav__item">
279 <a href="../../php/exceptions/" class="md-nav__link">
280 Exceptions
281 </a>
282 </li>
283
284
285
286
287
288
289
290
291 <li class="md-nav__item md-nav__item--nested">
292
293
294 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_5" type="checkbox" id="__nav_2_5" >
295
296 <label class="md-nav__link" for="__nav_2_5">
297 API
298 <span class="md-nav__icon md-icon"></span>
299 </label>
300 <nav class="md-nav" aria-label="API" data-md-level="2">
301 <label class="md-nav__title" for="__nav_2_5">
302 <span class="md-nav__icon md-icon"></span>
303 API
304 </label>
305 <ul class="md-nav__list" data-md-scrollfix>
306
307
308
309
310
6923e968
WG
311
312 <li class="md-nav__item md-nav__item--nested">
313
314
315 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_5_1" type="checkbox" id="__nav_2_5_1" >
316
317 <label class="md-nav__link" for="__nav_2_5_1">
318 Caches
319 <span class="md-nav__icon md-icon"></span>
320 </label>
321 <nav class="md-nav" aria-label="Caches" data-md-level="3">
322 <label class="md-nav__title" for="__nav_2_5_1">
323 <span class="md-nav__icon md-icon"></span>
324 Caches
325 </label>
326 <ul class="md-nav__list" data-md-scrollfix>
327
328
329
330
331
45ca63d0
TD
332 <li class="md-nav__item">
333 <a href="../../php/api/caches/" class="md-nav__link">
6923e968
WG
334 Overview
335 </a>
336 </li>
337
338
339
340
341
342
343
344 <li class="md-nav__item">
345 <a href="../../php/api/caches_persistent-caches/" class="md-nav__link">
346 Persistent Caches
347 </a>
348 </li>
349
350
351
352
353
354
355
356 <li class="md-nav__item">
357 <a href="../../php/api/caches_runtime-caches/" class="md-nav__link">
358 Runtime Caches
45ca63d0
TD
359 </a>
360 </li>
361
362
363
6923e968
WG
364 </ul>
365 </nav>
366 </li>
367
368
369
45ca63d0
TD
370
371
372
373
374 <li class="md-nav__item">
375 <a href="../../php/api/comments/" class="md-nav__link">
376 Comments
377 </a>
378 </li>
379
380
381
382
383
384
385
386 <li class="md-nav__item">
387 <a href="../../php/api/cronjobs/" class="md-nav__link">
388 Cronjobs
389 </a>
390 </li>
391
392
393
394
395
396
397
398 <li class="md-nav__item">
399 <a href="../../php/api/events/" class="md-nav__link">
400 Events
401 </a>
402 </li>
403
404
405
406
407
408
409
410
411 <li class="md-nav__item md-nav__item--nested">
412
413
414 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_5_5" type="checkbox" id="__nav_2_5_5" >
415
416 <label class="md-nav__link" for="__nav_2_5_5">
417 Form Builder
418 <span class="md-nav__icon md-icon"></span>
419 </label>
420 <nav class="md-nav" aria-label="Form Builder" data-md-level="3">
421 <label class="md-nav__title" for="__nav_2_5_5">
422 <span class="md-nav__icon md-icon"></span>
423 Form Builder
424 </label>
425 <ul class="md-nav__list" data-md-scrollfix>
426
427
428
429
430
431 <li class="md-nav__item">
432 <a href="../../php/api/form_builder/overview/" class="md-nav__link">
433 Overview
434 </a>
435 </li>
436
437
438
439
440
441
442
443 <li class="md-nav__item">
444 <a href="../../php/api/form_builder/structure/" class="md-nav__link">
445 Structure
446 </a>
447 </li>
448
449
450
451
452
453
454
455 <li class="md-nav__item">
456 <a href="../../php/api/form_builder/form_fields/" class="md-nav__link">
457 Fields
458 </a>
459 </li>
460
461
462
463
464
465
466
467 <li class="md-nav__item">
468 <a href="../../php/api/form_builder/validation_data/" class="md-nav__link">
469 Validation and Data
470 </a>
471 </li>
472
473
474
475
476
477
478
479 <li class="md-nav__item">
480 <a href="../../php/api/form_builder/dependencies/" class="md-nav__link">
481 Dependencies
482 </a>
483 </li>
484
485
486
487 </ul>
488 </nav>
489 </li>
490
491
492
493
494
495
496
497 <li class="md-nav__item">
498 <a href="../../php/api/package_installation_plugins/" class="md-nav__link">
499 Package Installation Plugins
500 </a>
501 </li>
502
503
504
505
506
507
508
509 <li class="md-nav__item">
510 <a href="../../php/api/user_activity_points/" class="md-nav__link">
511 User Activity Points
512 </a>
513 </li>
514
515
516
517
518
519
520
521 <li class="md-nav__item">
522 <a href="../../php/api/user_notifications/" class="md-nav__link">
523 User Notifications
524 </a>
525 </li>
526
527
528
529
530
531
532
533 <li class="md-nav__item">
534 <a href="../../php/api/sitemaps/" class="md-nav__link">
535 Sitemaps
536 </a>
537 </li>
538
539
540
541 </ul>
542 </nav>
543 </li>
544
545
546
547
548
549
550
551 <li class="md-nav__item">
552 <a href="../../php/code-style/" class="md-nav__link">
553 Code Style
554 </a>
555 </li>
556
557
558
559
560
561
562
563 <li class="md-nav__item">
564 <a href="../../php/apps/" class="md-nav__link">
565 Apps
566 </a>
567 </li>
568
569
570
571
572
573
574
575 <li class="md-nav__item">
576 <a href="../../php/gdpr/" class="md-nav__link">
577 GDPR
578 </a>
579 </li>
580
581
582
583 </ul>
584 </nav>
585 </li>
586
587
588
589
590
591
592
593
594
595
596
597 <li class="md-nav__item md-nav__item--nested">
598
599
600 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3" type="checkbox" id="__nav_3" >
601
602 <label class="md-nav__link" for="__nav_3">
603 Languages, Templates & CSS
604 <span class="md-nav__icon md-icon"></span>
605 </label>
606 <nav class="md-nav" aria-label="Languages, Templates & CSS" data-md-level="1">
607 <label class="md-nav__title" for="__nav_3">
608 <span class="md-nav__icon md-icon"></span>
609 Languages, Templates & CSS
610 </label>
611 <ul class="md-nav__list" data-md-scrollfix>
612
613
614
615
616
617 <li class="md-nav__item">
618 <a href="../../view/languages/" class="md-nav__link">
619 Languages
620 </a>
621 </li>
622
623
624
625
626
627
628
629 <li class="md-nav__item">
630 <a href="../../view/templates/" class="md-nav__link">
631 Templates
632 </a>
633 </li>
634
635
636
637
638
639
640
6923e968
WG
641 <li class="md-nav__item">
642 <a href="../../view/template-plugins/" class="md-nav__link">
643 Template Plugins
644 </a>
645 </li>
646
647
648
649
650
651
652
45ca63d0
TD
653 <li class="md-nav__item">
654 <a href="../../view/css/" class="md-nav__link">
655 CSS
656 </a>
657 </li>
658
659
660
661 </ul>
662 </nav>
663 </li>
664
665
666
667
668
669
670
671
672
673
674
675
676
677 <li class="md-nav__item md-nav__item--active md-nav__item--nested">
678
679
680 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_4" type="checkbox" id="__nav_4" checked>
681
682 <label class="md-nav__link" for="__nav_4">
77efcd46 683 TypeScript and JavaScript API
45ca63d0
TD
684 <span class="md-nav__icon md-icon"></span>
685 </label>
77efcd46 686 <nav class="md-nav" aria-label="TypeScript and JavaScript API" data-md-level="1">
45ca63d0
TD
687 <label class="md-nav__title" for="__nav_4">
688 <span class="md-nav__icon md-icon"></span>
77efcd46 689 TypeScript and JavaScript API
45ca63d0
TD
690 </label>
691 <ul class="md-nav__list" data-md-scrollfix>
692
693
694
695
696
697 <li class="md-nav__item">
698 <a href="../general-usage/" class="md-nav__link">
699 General Usage
700 </a>
701 </li>
702
703
704
705
706
707
708
77efcd46
WG
709 <li class="md-nav__item">
710 <a href="../typescript/" class="md-nav__link">
711 TypeScript
712 </a>
713 </li>
714
715
716
717
718
719
720
45ca63d0
TD
721
722 <li class="md-nav__item md-nav__item--nested">
723
724
77efcd46 725 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_4_3" type="checkbox" id="__nav_4_3" >
45ca63d0 726
77efcd46 727 <label class="md-nav__link" for="__nav_4_3">
45ca63d0
TD
728 New API
729 <span class="md-nav__icon md-icon"></span>
730 </label>
731 <nav class="md-nav" aria-label="New API" data-md-level="2">
77efcd46 732 <label class="md-nav__title" for="__nav_4_3">
45ca63d0
TD
733 <span class="md-nav__icon md-icon"></span>
734 New API
735 </label>
736 <ul class="md-nav__list" data-md-scrollfix>
737
738
739
740
741
742 <li class="md-nav__item">
743 <a href="../new-api_writing-a-module/" class="md-nav__link">
744 Writing a module
745 </a>
746 </li>
747
748
749
750
751
752
753
754 <li class="md-nav__item">
755 <a href="../new-api_data-structures/" class="md-nav__link">
756 Data Structures
757 </a>
758 </li>
759
760
761
762
763
764
765
766 <li class="md-nav__item">
767 <a href="../new-api_core/" class="md-nav__link">
768 Core Functions
769 </a>
770 </li>
771
772
773
774
775
776
777
778 <li class="md-nav__item">
779 <a href="../new-api_dom/" class="md-nav__link">
780 DOM
781 </a>
782 </li>
783
784
785
786
787
788
789
790 <li class="md-nav__item">
791 <a href="../new-api_events/" class="md-nav__link">
792 Event Handling
793 </a>
794 </li>
795
796
797
798
799
800
801
802 <li class="md-nav__item">
803 <a href="../new-api_ajax/" class="md-nav__link">
804 Ajax
805 </a>
806 </li>
807
808
809
810
811
812
813
814 <li class="md-nav__item">
815 <a href="../new-api_dialogs/" class="md-nav__link">
816 Dialogs
817 </a>
818 </li>
819
820
821
822
823
824
825
826 <li class="md-nav__item">
827 <a href="../new-api_browser/" class="md-nav__link">
828 Browser and Screen Sizes
829 </a>
830 </li>
831
832
833
834
835
836
837
838 <li class="md-nav__item">
839 <a href="../new-api_ui/" class="md-nav__link">
840 User Interface
841 </a>
842 </li>
843
844
845
846 </ul>
847 </nav>
848 </li>
849
850
851
852
853
854
855
856 <li class="md-nav__item">
857 <a href="../legacy-api/" class="md-nav__link">
858 Legacy API
859 </a>
860 </li>
861
862
863
864
865
866
867
868
869
870 <li class="md-nav__item md-nav__item--active">
871
872 <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
873
a4835aa6 874
45ca63d0
TD
875
876
877
878 <label class="md-nav__link md-nav__link--active" for="__toc">
879 Helper Functions
880 <span class="md-nav__icon md-icon"></span>
881 </label>
882
883 <a href="./" class="md-nav__link md-nav__link--active">
884 Helper Functions
885 </a>
886
887
888<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
889
890
a4835aa6 891
45ca63d0
TD
892
893
894
895 <label class="md-nav__title" for="__toc">
896 <span class="md-nav__icon md-icon"></span>
897 Table of contents
898 </label>
899 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
900
901 <li class="md-nav__item">
902 <a href="#introduction" class="md-nav__link">
903 Introduction
904 </a>
905
906</li>
907
908 <li class="md-nav__item">
909 <a href="#elements" class="md-nav__link">
910 Elements
911 </a>
912
913 <nav class="md-nav" aria-label="Elements">
914 <ul class="md-nav__list">
915
916 <li class="md-nav__item">
917 <a href="#elcreatetagname-string-element" class="md-nav__link">
918 elCreate(tagName: string): Element
919 </a>
920
921</li>
922
923 <li class="md-nav__item">
924 <a href="#elremoveelement-element" class="md-nav__link">
925 elRemove(element: Element)
926 </a>
927
928</li>
929
930 <li class="md-nav__item">
931 <a href="#elshowelement-element" class="md-nav__link">
932 elShow(element: Element)
933 </a>
934
935</li>
936
937 <li class="md-nav__item">
938 <a href="#elhideelement-element" class="md-nav__link">
939 elHide(element: Element)
940 </a>
941
942</li>
943
944 <li class="md-nav__item">
945 <a href="#eltoggleelement-element" class="md-nav__link">
946 elToggle(element: Element)
947 </a>
948
949</li>
950
951 </ul>
952 </nav>
953
954</li>
955
956 <li class="md-nav__item">
957 <a href="#attributes" class="md-nav__link">
958 Attributes
959 </a>
960
961 <nav class="md-nav" aria-label="Attributes">
962 <ul class="md-nav__list">
963
964 <li class="md-nav__item">
965 <a href="#elattrelement-element-attribute-string-value-string-string" class="md-nav__link">
966 elAttr(element: Element, attribute: string, value?: string): string
967 </a>
968
969</li>
970
971 <li class="md-nav__item">
972 <a href="#elattrboolelement-element-attribute-string-boolean" class="md-nav__link">
973 elAttrBool(element: Element, attribute: string): boolean
974 </a>
975
976</li>
977
978 <li class="md-nav__item">
979 <a href="#eldataelement-element-attribute-string-value-string-string" class="md-nav__link">
980 elData(element: Element, attribute: string, value?: string): string
981 </a>
982
983</li>
984
985 <li class="md-nav__item">
986 <a href="#eldataboolelement-element-attribute-string-boolean" class="md-nav__link">
987 elDataBool(element: Element, attribute: string): boolean
988 </a>
989
990</li>
991
992 </ul>
993 </nav>
994
995</li>
996
997 <li class="md-nav__item">
998 <a href="#selecting-elements" class="md-nav__link">
999 Selecting Elements
1000 </a>
1001
1002 <nav class="md-nav" aria-label="Selecting Elements">
1003 <ul class="md-nav__list">
1004
1005 <li class="md-nav__item">
1006 <a href="#elbyidid-string-element-null" class="md-nav__link">
1007 elById(id: string): Element | null
1008 </a>
1009
1010</li>
1011
1012 <li class="md-nav__item">
1013 <a href="#elbyselselector-string-context-element-element-null" class="md-nav__link">
1014 elBySel(selector: string, context?: Element): Element | null
1015 </a>
1016
1017</li>
1018
1019 <li class="md-nav__item">
1020 <a href="#elbyselallselector-string-context-element-callback-element-element-void-nodelist" class="md-nav__link">
1021 elBySelAll(selector: string, context?: Element, callback: (element: Element) =&gt; void): NodeList
1022 </a>
1023
1024 <nav class="md-nav" aria-label="elBySelAll(selector: string, context?: Element, callback: (element: Element) =&gt; void): NodeList">
1025 <ul class="md-nav__list">
1026
1027 <li class="md-nav__item">
1028 <a href="#callback-to-iterate-over-elements" class="md-nav__link">
1029 Callback to Iterate Over Elements
1030 </a>
1031
1032</li>
1033
1034 </ul>
1035 </nav>
1036
1037</li>
1038
1039 <li class="md-nav__item">
1040 <a href="#elclosestelement-element-selector-string-element-null" class="md-nav__link">
1041 elClosest(element: Element, selector: string): Element | null
1042 </a>
1043
1044 <nav class="md-nav" aria-label="elClosest(element: Element, selector: string): Element | null">
1045 <ul class="md-nav__list">
1046
1047 <li class="md-nav__item">
1048 <a href="#text-nodes" class="md-nav__link">
1049 Text Nodes
1050 </a>
1051
1052</li>
1053
1054 </ul>
1055 </nav>
1056
1057</li>
1058
1059 <li class="md-nav__item">
1060 <a href="#elbyclassclassname-string-context-element-nodelist" class="md-nav__link">
1061 elByClass(className: string, context?: Element): NodeList
1062 </a>
1063
1064</li>
1065
1066 <li class="md-nav__item">
1067 <a href="#elbytagtagname-string-context-element-nodelist" class="md-nav__link">
1068 elByTag(tagName: string, context?: Element): NodeList
1069 </a>
1070
1071</li>
1072
1073 </ul>
1074 </nav>
1075
1076</li>
1077
1078 <li class="md-nav__item">
1079 <a href="#utility-functions" class="md-nav__link">
1080 Utility Functions
1081 </a>
1082
1083 <nav class="md-nav" aria-label="Utility Functions">
1084 <ul class="md-nav__list">
1085
1086 <li class="md-nav__item">
1087 <a href="#elinnererrorelement-element-errormessage-string-ishtml-boolean-element-null" class="md-nav__link">
1088 `elInnerError(element: Element, errorMessage?: string, isHtml?: boolean): Element | null``
1089 </a>
1090
1091</li>
1092
1093 </ul>
1094 </nav>
1095
1096</li>
1097
1098 <li class="md-nav__item">
1099 <a href="#string-extensions" class="md-nav__link">
1100 String Extensions
1101 </a>
1102
1103 <nav class="md-nav" aria-label="String Extensions">
1104 <ul class="md-nav__list">
1105
1106 <li class="md-nav__item">
1107 <a href="#hashcode-string" class="md-nav__link">
1108 hashCode(): string
1109 </a>
1110
1111</li>
1112
1113 </ul>
1114 </nav>
1115
1116</li>
1117
1118 </ul>
1119
1120</nav>
1121
1122 </li>
1123
1124
1125
1126
1127
1128
1129
1130 <li class="md-nav__item">
1131 <a href="../code-snippets/" class="md-nav__link">
1132 Code Snippets
1133 </a>
1134 </li>
1135
1136
1137
1138 </ul>
1139 </nav>
1140 </li>
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152 <li class="md-nav__item md-nav__item--nested">
1153
1154
1155 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5" type="checkbox" id="__nav_5" >
1156
1157 <label class="md-nav__link" for="__nav_5">
1158 Package Components
1159 <span class="md-nav__icon md-icon"></span>
1160 </label>
1161 <nav class="md-nav" aria-label="Package Components" data-md-level="1">
1162 <label class="md-nav__title" for="__nav_5">
1163 <span class="md-nav__icon md-icon"></span>
1164 Package Components
1165 </label>
1166 <ul class="md-nav__list" data-md-scrollfix>
1167
1168
1169
1170
1171
1172 <li class="md-nav__item">
1173 <a href="../../package/package-xml/" class="md-nav__link">
1174 package.xml
1175 </a>
1176 </li>
1177
1178
1179
1180
1181
1182
1183
1184
1185 <li class="md-nav__item md-nav__item--nested">
1186
1187
1188 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5_2" type="checkbox" id="__nav_5_2" >
1189
1190 <label class="md-nav__link" for="__nav_5_2">
1191 PIPs
1192 <span class="md-nav__icon md-icon"></span>
1193 </label>
1194 <nav class="md-nav" aria-label="PIPs" data-md-level="2">
1195 <label class="md-nav__title" for="__nav_5_2">
1196 <span class="md-nav__icon md-icon"></span>
1197 PIPs
1198 </label>
1199 <ul class="md-nav__list" data-md-scrollfix>
1200
1201
1202
1203
1204
1205 <li class="md-nav__item">
1206 <a href="../../package/pip/" class="md-nav__link">
1207 Overview
1208 </a>
1209 </li>
1210
1211
1212
1213
1214
1215
1216
1217 <li class="md-nav__item">
1218 <a href="../../package/pip/acl-option/" class="md-nav__link">
1219 aclOption
1220 </a>
1221 </li>
1222
1223
1224
1225
1226
1227
1228
1229 <li class="md-nav__item">
1230 <a href="../../package/pip/acp-menu/" class="md-nav__link">
1231 acpMenu
1232 </a>
1233 </li>
1234
1235
1236
1237
1238
1239
1240
1241 <li class="md-nav__item">
1242 <a href="../../package/pip/acp-search-provider/" class="md-nav__link">
1243 acpSearchProvider
1244 </a>
1245 </li>
1246
1247
1248
1249
1250
1251
1252
1253 <li class="md-nav__item">
1254 <a href="../../package/pip/acp-template/" class="md-nav__link">
1255 acpTemplate
1256 </a>
1257 </li>
1258
1259
1260
1261
1262
1263
1264
1265 <li class="md-nav__item">
1266 <a href="../../package/pip/bbcode/" class="md-nav__link">
1267 bbcode
1268 </a>
1269 </li>
1270
1271
1272
1273
1274
1275
1276
1277 <li class="md-nav__item">
1278 <a href="../../package/pip/box/" class="md-nav__link">
1279 box
1280 </a>
1281 </li>
1282
1283
1284
1285
1286
1287
1288
1289 <li class="md-nav__item">
1290 <a href="../../package/pip/clipboard-action/" class="md-nav__link">
1291 clipboardAction
1292 </a>
1293 </li>
1294
1295
1296
1297
1298
1299
1300
1301 <li class="md-nav__item">
1302 <a href="../../package/pip/core-object/" class="md-nav__link">
1303 coreObject
1304 </a>
1305 </li>
1306
1307
1308
1309
1310
1311
1312
1313 <li class="md-nav__item">
1314 <a href="../../package/pip/cronjob/" class="md-nav__link">
1315 cronjob
1316 </a>
1317 </li>
1318
1319
1320
1321
1322
1323
1324
6923e968
WG
1325 <li class="md-nav__item">
1326 <a href="../../package/pip/database/" class="md-nav__link">
1327 database
1328 </a>
1329 </li>
1330
1331
1332
1333
1334
1335
1336
45ca63d0
TD
1337 <li class="md-nav__item">
1338 <a href="../../package/pip/event-listener/" class="md-nav__link">
1339 eventListener
1340 </a>
1341 </li>
1342
1343
1344
1345
1346
1347
1348
1349 <li class="md-nav__item">
1350 <a href="../../package/pip/file/" class="md-nav__link">
1351 file
1352 </a>
1353 </li>
1354
1355
1356
1357
1358
1359
1360
1361 <li class="md-nav__item">
1362 <a href="../../package/pip/language/" class="md-nav__link">
1363 language
1364 </a>
1365 </li>
1366
1367
1368
1369
1370
1371
1372
1373 <li class="md-nav__item">
1374 <a href="../../package/pip/media-provider/" class="md-nav__link">
1375 mediaProvider
1376 </a>
1377 </li>
1378
1379
1380
1381
1382
1383
1384
1385 <li class="md-nav__item">
1386 <a href="../../package/pip/menu/" class="md-nav__link">
1387 menu
1388 </a>
1389 </li>
1390
1391
1392
1393
1394
1395
1396
1397 <li class="md-nav__item">
1398 <a href="../../package/pip/menu-item/" class="md-nav__link">
1399 menuItem
1400 </a>
1401 </li>
1402
1403
1404
1405
1406
1407
1408
1409 <li class="md-nav__item">
1410 <a href="../../package/pip/object-type/" class="md-nav__link">
1411 objectType
1412 </a>
1413 </li>
1414
1415
1416
1417
1418
1419
1420
1421 <li class="md-nav__item">
1422 <a href="../../package/pip/object-type-definition/" class="md-nav__link">
1423 objectTypeDefinition
1424 </a>
1425 </li>
1426
1427
1428
1429
1430
1431
1432
1433 <li class="md-nav__item">
1434 <a href="../../package/pip/option/" class="md-nav__link">
1435 option
1436 </a>
1437 </li>
1438
1439
1440
1441
1442
1443
1444
1445 <li class="md-nav__item">
1446 <a href="../../package/pip/page/" class="md-nav__link">
1447 page
1448 </a>
1449 </li>
1450
1451
1452
1453
1454
1455
1456
1457 <li class="md-nav__item">
1458 <a href="../../package/pip/pip/" class="md-nav__link">
1459 pip
1460 </a>
1461 </li>
1462
1463
1464
1465
1466
1467
1468
1469 <li class="md-nav__item">
1470 <a href="../../package/pip/script/" class="md-nav__link">
1471 script
1472 </a>
1473 </li>
1474
1475
1476
1477
1478
1479
1480
1481 <li class="md-nav__item">
1482 <a href="../../package/pip/smiley/" class="md-nav__link">
1483 smiley
1484 </a>
1485 </li>
1486
1487
1488
1489
1490
1491
1492
1493 <li class="md-nav__item">
1494 <a href="../../package/pip/sql/" class="md-nav__link">
1495 sql
1496 </a>
1497 </li>
1498
1499
1500
1501
1502
1503
1504
1505 <li class="md-nav__item">
1506 <a href="../../package/pip/style/" class="md-nav__link">
1507 style
1508 </a>
1509 </li>
1510
1511
1512
1513
1514
1515
1516
1517 <li class="md-nav__item">
1518 <a href="../../package/pip/template/" class="md-nav__link">
1519 template
1520 </a>
1521 </li>
1522
1523
1524
1525
1526
1527
1528
1529 <li class="md-nav__item">
1530 <a href="../../package/pip/template-listener/" class="md-nav__link">
1531 templateListener
1532 </a>
1533 </li>
1534
1535
1536
1537
1538
1539
1540
1541 <li class="md-nav__item">
1542 <a href="../../package/pip/user-group-option/" class="md-nav__link">
1543 userGroupOption
1544 </a>
1545 </li>
1546
1547
1548
1549
1550
1551
1552
1553 <li class="md-nav__item">
1554 <a href="../../package/pip/user-menu/" class="md-nav__link">
1555 userMenu
1556 </a>
1557 </li>
1558
1559
1560
1561
1562
1563
1564
1565 <li class="md-nav__item">
1566 <a href="../../package/pip/user-notification-event/" class="md-nav__link">
1567 userNotificationEvent
1568 </a>
1569 </li>
1570
1571
1572
1573
1574
1575
1576
1577 <li class="md-nav__item">
1578 <a href="../../package/pip/user-option/" class="md-nav__link">
1579 userOption
1580 </a>
1581 </li>
1582
1583
1584
1585
1586
1587
1588
1589 <li class="md-nav__item">
1590 <a href="../../package/pip/user-profile-menu/" class="md-nav__link">
1591 userProfileMenu
1592 </a>
1593 </li>
1594
1595
1596
1597 </ul>
1598 </nav>
1599 </li>
1600
1601
1602
1603
1604
1605
1606
1607 <li class="md-nav__item">
1608 <a href="../../package/database-php-api/" class="md-nav__link">
1609 Database PHP API
1610 </a>
1611 </li>
1612
1613
1614
1615 </ul>
1616 </nav>
1617 </li>
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629 <li class="md-nav__item md-nav__item--nested">
1630
1631
1632 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6" type="checkbox" id="__nav_6" >
1633
1634 <label class="md-nav__link" for="__nav_6">
1635 Migration
1636 <span class="md-nav__icon md-icon"></span>
1637 </label>
1638 <nav class="md-nav" aria-label="Migration" data-md-level="1">
1639 <label class="md-nav__title" for="__nav_6">
1640 <span class="md-nav__icon md-icon"></span>
1641 Migration
1642 </label>
1643 <ul class="md-nav__list" data-md-scrollfix>
1644
1645
1646
1647
1648
1649
1650 <li class="md-nav__item md-nav__item--nested">
1651
1652
1653 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_1" type="checkbox" id="__nav_6_1" >
1654
1655 <label class="md-nav__link" for="__nav_6_1">
1656 Migrating from WSC 5.3
1657 <span class="md-nav__icon md-icon"></span>
1658 </label>
1659 <nav class="md-nav" aria-label="Migrating from WSC 5.3" data-md-level="2">
1660 <label class="md-nav__title" for="__nav_6_1">
1661 <span class="md-nav__icon md-icon"></span>
1662 Migrating from WSC 5.3
1663 </label>
1664 <ul class="md-nav__list" data-md-scrollfix>
1665
1666
1667
1668
1669
1670 <li class="md-nav__item">
1671 <a href="../../migration/wsc53/php/" class="md-nav__link">
1672 PHP API
1673 </a>
1674 </li>
1675
1676
1677
1678
1679
1680
1681
1682 <li class="md-nav__item">
1683 <a href="../../migration/wsc53/session/" class="md-nav__link">
1684 Session Handling and Authentication
1685 </a>
1686 </li>
1687
1688
1689
1690
1691
1692
1693
1694 <li class="md-nav__item">
1695 <a href="../../migration/wsc53/javascript/" class="md-nav__link">
77efcd46 1696 TypeScript and JavaScript
45ca63d0
TD
1697 </a>
1698 </li>
1699
1700
1701
1702
1703
1704
1705
1706 <li class="md-nav__item">
1707 <a href="../../migration/wsc53/templates/" class="md-nav__link">
1708 Templates
1709 </a>
1710 </li>
1711
1712
1713
1714
1715
1716
1717
1718 <li class="md-nav__item">
1719 <a href="../../migration/wsc53/libraries/" class="md-nav__link">
1720 Third Party Libraries
1721 </a>
1722 </li>
1723
1724
1725
1726 </ul>
1727 </nav>
1728 </li>
1729
1730
1731
1732
1733
1734
1735
1736
1737 <li class="md-nav__item md-nav__item--nested">
1738
1739
1740 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_2" type="checkbox" id="__nav_6_2" >
1741
1742 <label class="md-nav__link" for="__nav_6_2">
1743 Migrating from WSC 5.2
1744 <span class="md-nav__icon md-icon"></span>
1745 </label>
1746 <nav class="md-nav" aria-label="Migrating from WSC 5.2" data-md-level="2">
1747 <label class="md-nav__title" for="__nav_6_2">
1748 <span class="md-nav__icon md-icon"></span>
1749 Migrating from WSC 5.2
1750 </label>
1751 <ul class="md-nav__list" data-md-scrollfix>
1752
1753
1754
1755
1756
1757 <li class="md-nav__item">
1758 <a href="../../migration/wsc52/php/" class="md-nav__link">
1759 PHP API
1760 </a>
1761 </li>
1762
1763
1764
1765
1766
1767
1768
1769 <li class="md-nav__item">
1770 <a href="../../migration/wsc52/templates/" class="md-nav__link">
1771 Templates and Languages
1772 </a>
1773 </li>
1774
1775
1776
1777
1778
1779
1780
1781 <li class="md-nav__item">
1782 <a href="../../migration/wsc52/libraries/" class="md-nav__link">
1783 Third Party Libraries
1784 </a>
1785 </li>
1786
1787
1788
1789 </ul>
1790 </nav>
1791 </li>
1792
1793
1794
1795
1796
1797
1798
1799
1800 <li class="md-nav__item md-nav__item--nested">
1801
1802
1803 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_3" type="checkbox" id="__nav_6_3" >
1804
1805 <label class="md-nav__link" for="__nav_6_3">
1806 Migrating from WSC 3.1
1807 <span class="md-nav__icon md-icon"></span>
1808 </label>
1809 <nav class="md-nav" aria-label="Migrating from WSC 3.1" data-md-level="2">
1810 <label class="md-nav__title" for="__nav_6_3">
1811 <span class="md-nav__icon md-icon"></span>
1812 Migrating from WSC 3.1
1813 </label>
1814 <ul class="md-nav__list" data-md-scrollfix>
1815
1816
1817
1818
1819
1820 <li class="md-nav__item">
1821 <a href="../../migration/wsc31/php/" class="md-nav__link">
1822 PHP API
1823 </a>
1824 </li>
1825
1826
1827
1828 </ul>
1829 </nav>
1830 </li>
1831
1832
1833
1834
1835
1836
1837
1838
1839 <li class="md-nav__item md-nav__item--nested">
1840
1841
1842 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_4" type="checkbox" id="__nav_6_4" >
1843
1844 <label class="md-nav__link" for="__nav_6_4">
1845 Migrating from WSC 3.0
1846 <span class="md-nav__icon md-icon"></span>
1847 </label>
1848 <nav class="md-nav" aria-label="Migrating from WSC 3.0" data-md-level="2">
1849 <label class="md-nav__title" for="__nav_6_4">
1850 <span class="md-nav__icon md-icon"></span>
1851 Migrating from WSC 3.0
1852 </label>
1853 <ul class="md-nav__list" data-md-scrollfix>
1854
1855
1856
1857
1858
1859 <li class="md-nav__item">
1860 <a href="../../migration/wsc30/php/" class="md-nav__link">
1861 PHP API
1862 </a>
1863 </li>
1864
1865
1866
1867
1868
1869
1870
1871 <li class="md-nav__item">
1872 <a href="../../migration/wsc30/javascript/" class="md-nav__link">
1873 JavaScript API
1874 </a>
1875 </li>
1876
1877
1878
1879
1880
1881
1882
1883 <li class="md-nav__item">
1884 <a href="../../migration/wsc30/templates/" class="md-nav__link">
1885 Templates
1886 </a>
1887 </li>
1888
1889
1890
1891
1892
1893
1894
1895 <li class="md-nav__item">
1896 <a href="../../migration/wsc30/css/" class="md-nav__link">
1897 CSS
1898 </a>
1899 </li>
1900
1901
1902
1903
1904
1905
1906
1907 <li class="md-nav__item">
1908 <a href="../../migration/wsc30/package/" class="md-nav__link">
1909 Package Components
1910 </a>
1911 </li>
1912
1913
1914
1915 </ul>
1916 </nav>
1917 </li>
1918
1919
1920
1921
1922
1923
1924
1925
1926 <li class="md-nav__item md-nav__item--nested">
1927
1928
1929 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_5" type="checkbox" id="__nav_6_5" >
1930
1931 <label class="md-nav__link" for="__nav_6_5">
1932 Migrating from WCF 2.1
1933 <span class="md-nav__icon md-icon"></span>
1934 </label>
1935 <nav class="md-nav" aria-label="Migrating from WCF 2.1" data-md-level="2">
1936 <label class="md-nav__title" for="__nav_6_5">
1937 <span class="md-nav__icon md-icon"></span>
1938 Migrating from WCF 2.1
1939 </label>
1940 <ul class="md-nav__list" data-md-scrollfix>
1941
1942
1943
1944
1945
1946 <li class="md-nav__item">
1947 <a href="../../migration/wcf21/php/" class="md-nav__link">
1948 PHP API
1949 </a>
1950 </li>
1951
1952
1953
1954
1955
1956
1957
1958 <li class="md-nav__item">
1959 <a href="../../migration/wcf21/templates/" class="md-nav__link">
1960 Templates
1961 </a>
1962 </li>
1963
1964
1965
1966
1967
1968
1969
1970 <li class="md-nav__item">
1971 <a href="../../migration/wcf21/css/" class="md-nav__link">
1972 CSS
1973 </a>
1974 </li>
1975
1976
1977
1978
1979
1980
1981
1982 <li class="md-nav__item">
1983 <a href="../../migration/wcf21/package/" class="md-nav__link">
1984 Package Components
1985 </a>
1986 </li>
1987
1988
1989
1990 </ul>
1991 </nav>
1992 </li>
1993
1994
1995
1996 </ul>
1997 </nav>
1998 </li>
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010 <li class="md-nav__item md-nav__item--nested">
2011
2012
2013 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7" type="checkbox" id="__nav_7" >
2014
2015 <label class="md-nav__link" for="__nav_7">
2016 Tutorials
2017 <span class="md-nav__icon md-icon"></span>
2018 </label>
2019 <nav class="md-nav" aria-label="Tutorials" data-md-level="1">
2020 <label class="md-nav__title" for="__nav_7">
2021 <span class="md-nav__icon md-icon"></span>
2022 Tutorials
2023 </label>
2024 <ul class="md-nav__list" data-md-scrollfix>
2025
2026
2027
2028
2029
2030
2031 <li class="md-nav__item md-nav__item--nested">
2032
2033
2034 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7_1" type="checkbox" id="__nav_7_1" >
2035
2036 <label class="md-nav__link" for="__nav_7_1">
2037 Tutorial Series
2038 <span class="md-nav__icon md-icon"></span>
2039 </label>
2040 <nav class="md-nav" aria-label="Tutorial Series" data-md-level="2">
2041 <label class="md-nav__title" for="__nav_7_1">
2042 <span class="md-nav__icon md-icon"></span>
2043 Tutorial Series
2044 </label>
2045 <ul class="md-nav__list" data-md-scrollfix>
2046
2047
2048
2049
2050
2051 <li class="md-nav__item">
2052 <a href="../../tutorial/series/overview/" class="md-nav__link">
2053 Overview
2054 </a>
2055 </li>
2056
2057
2058
2059
2060
2061
2062
2063 <li class="md-nav__item">
2064 <a href="../../tutorial/series/part_1/" class="md-nav__link">
2065 Part 1
2066 </a>
2067 </li>
2068
2069
2070
2071
2072
2073
2074
2075 <li class="md-nav__item">
2076 <a href="../../tutorial/series/part_2/" class="md-nav__link">
2077 Part 2
2078 </a>
2079 </li>
2080
2081
2082
2083
2084
2085
2086
2087 <li class="md-nav__item">
2088 <a href="../../tutorial/series/part_3/" class="md-nav__link">
2089 Part 3
2090 </a>
2091 </li>
2092
2093
2094
41eda543
WG
2095
2096
2097
2098
2099 <li class="md-nav__item">
2100 <a href="../../tutorial/series/part_4/" class="md-nav__link">
2101 Part 4
2102 </a>
2103 </li>
2104
2105
2106
716a4ab6
WG
2107
2108
2109
2110
2111 <li class="md-nav__item">
2112 <a href="../../tutorial/series/part_5/" class="md-nav__link">
2113 Part 5
2114 </a>
2115 </li>
2116
2117
2118
45ca63d0
TD
2119 </ul>
2120 </nav>
2121 </li>
2122
2123
2124
2125 </ul>
2126 </nav>
2127 </li>
2128
2129
2130
2131 </ul>
2132</nav>
2133 </div>
2134 </div>
2135 </div>
2136
2137
2138
2139 <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
2140 <div class="md-sidebar__scrollwrap">
2141 <div class="md-sidebar__inner">
2142
2143<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
2144
2145
a4835aa6 2146
45ca63d0
TD
2147
2148
2149
2150 <label class="md-nav__title" for="__toc">
2151 <span class="md-nav__icon md-icon"></span>
2152 Table of contents
2153 </label>
2154 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
2155
2156 <li class="md-nav__item">
2157 <a href="#introduction" class="md-nav__link">
2158 Introduction
2159 </a>
2160
2161</li>
2162
2163 <li class="md-nav__item">
2164 <a href="#elements" class="md-nav__link">
2165 Elements
2166 </a>
2167
2168 <nav class="md-nav" aria-label="Elements">
2169 <ul class="md-nav__list">
2170
2171 <li class="md-nav__item">
2172 <a href="#elcreatetagname-string-element" class="md-nav__link">
2173 elCreate(tagName: string): Element
2174 </a>
2175
2176</li>
2177
2178 <li class="md-nav__item">
2179 <a href="#elremoveelement-element" class="md-nav__link">
2180 elRemove(element: Element)
2181 </a>
2182
2183</li>
2184
2185 <li class="md-nav__item">
2186 <a href="#elshowelement-element" class="md-nav__link">
2187 elShow(element: Element)
2188 </a>
2189
2190</li>
2191
2192 <li class="md-nav__item">
2193 <a href="#elhideelement-element" class="md-nav__link">
2194 elHide(element: Element)
2195 </a>
2196
2197</li>
2198
2199 <li class="md-nav__item">
2200 <a href="#eltoggleelement-element" class="md-nav__link">
2201 elToggle(element: Element)
2202 </a>
2203
2204</li>
2205
2206 </ul>
2207 </nav>
2208
2209</li>
2210
2211 <li class="md-nav__item">
2212 <a href="#attributes" class="md-nav__link">
2213 Attributes
2214 </a>
2215
2216 <nav class="md-nav" aria-label="Attributes">
2217 <ul class="md-nav__list">
2218
2219 <li class="md-nav__item">
2220 <a href="#elattrelement-element-attribute-string-value-string-string" class="md-nav__link">
2221 elAttr(element: Element, attribute: string, value?: string): string
2222 </a>
2223
2224</li>
2225
2226 <li class="md-nav__item">
2227 <a href="#elattrboolelement-element-attribute-string-boolean" class="md-nav__link">
2228 elAttrBool(element: Element, attribute: string): boolean
2229 </a>
2230
2231</li>
2232
2233 <li class="md-nav__item">
2234 <a href="#eldataelement-element-attribute-string-value-string-string" class="md-nav__link">
2235 elData(element: Element, attribute: string, value?: string): string
2236 </a>
2237
2238</li>
2239
2240 <li class="md-nav__item">
2241 <a href="#eldataboolelement-element-attribute-string-boolean" class="md-nav__link">
2242 elDataBool(element: Element, attribute: string): boolean
2243 </a>
2244
2245</li>
2246
2247 </ul>
2248 </nav>
2249
2250</li>
2251
2252 <li class="md-nav__item">
2253 <a href="#selecting-elements" class="md-nav__link">
2254 Selecting Elements
2255 </a>
2256
2257 <nav class="md-nav" aria-label="Selecting Elements">
2258 <ul class="md-nav__list">
2259
2260 <li class="md-nav__item">
2261 <a href="#elbyidid-string-element-null" class="md-nav__link">
2262 elById(id: string): Element | null
2263 </a>
2264
2265</li>
2266
2267 <li class="md-nav__item">
2268 <a href="#elbyselselector-string-context-element-element-null" class="md-nav__link">
2269 elBySel(selector: string, context?: Element): Element | null
2270 </a>
2271
2272</li>
2273
2274 <li class="md-nav__item">
2275 <a href="#elbyselallselector-string-context-element-callback-element-element-void-nodelist" class="md-nav__link">
2276 elBySelAll(selector: string, context?: Element, callback: (element: Element) =&gt; void): NodeList
2277 </a>
2278
2279 <nav class="md-nav" aria-label="elBySelAll(selector: string, context?: Element, callback: (element: Element) =&gt; void): NodeList">
2280 <ul class="md-nav__list">
2281
2282 <li class="md-nav__item">
2283 <a href="#callback-to-iterate-over-elements" class="md-nav__link">
2284 Callback to Iterate Over Elements
2285 </a>
2286
2287</li>
2288
2289 </ul>
2290 </nav>
2291
2292</li>
2293
2294 <li class="md-nav__item">
2295 <a href="#elclosestelement-element-selector-string-element-null" class="md-nav__link">
2296 elClosest(element: Element, selector: string): Element | null
2297 </a>
2298
2299 <nav class="md-nav" aria-label="elClosest(element: Element, selector: string): Element | null">
2300 <ul class="md-nav__list">
2301
2302 <li class="md-nav__item">
2303 <a href="#text-nodes" class="md-nav__link">
2304 Text Nodes
2305 </a>
2306
2307</li>
2308
2309 </ul>
2310 </nav>
2311
2312</li>
2313
2314 <li class="md-nav__item">
2315 <a href="#elbyclassclassname-string-context-element-nodelist" class="md-nav__link">
2316 elByClass(className: string, context?: Element): NodeList
2317 </a>
2318
2319</li>
2320
2321 <li class="md-nav__item">
2322 <a href="#elbytagtagname-string-context-element-nodelist" class="md-nav__link">
2323 elByTag(tagName: string, context?: Element): NodeList
2324 </a>
2325
2326</li>
2327
2328 </ul>
2329 </nav>
2330
2331</li>
2332
2333 <li class="md-nav__item">
2334 <a href="#utility-functions" class="md-nav__link">
2335 Utility Functions
2336 </a>
2337
2338 <nav class="md-nav" aria-label="Utility Functions">
2339 <ul class="md-nav__list">
2340
2341 <li class="md-nav__item">
2342 <a href="#elinnererrorelement-element-errormessage-string-ishtml-boolean-element-null" class="md-nav__link">
2343 `elInnerError(element: Element, errorMessage?: string, isHtml?: boolean): Element | null``
2344 </a>
2345
2346</li>
2347
2348 </ul>
2349 </nav>
2350
2351</li>
2352
2353 <li class="md-nav__item">
2354 <a href="#string-extensions" class="md-nav__link">
2355 String Extensions
2356 </a>
2357
2358 <nav class="md-nav" aria-label="String Extensions">
2359 <ul class="md-nav__list">
2360
2361 <li class="md-nav__item">
2362 <a href="#hashcode-string" class="md-nav__link">
2363 hashCode(): string
2364 </a>
2365
2366</li>
2367
2368 </ul>
2369 </nav>
2370
2371</li>
2372
2373 </ul>
2374
2375</nav>
2376 </div>
2377 </div>
2378 </div>
2379
2380
2381 <div class="md-content" data-md-component="content">
2382 <article class="md-content__inner md-typeset">
2383
2384
9b8bddda 2385 <a href="https://github.com/WoltLab/docs.woltlab.com/edit/5.4/docs/javascript/helper-functions.md" title="Edit this page" class="md-content__button md-icon">
7124f4cb
WG
2386 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"/></svg>
2387 </a>
2388
45ca63d0
TD
2389
2390 <h1 id="javascript-helper-functions">JavaScript Helper Functions<a class="headerlink" href="#javascript-helper-functions" title="Permanent link">#</a></h1>
2391<h2 id="introduction">Introduction<a class="headerlink" href="#introduction" title="Permanent link">#</a></h2>
2392<p>Since version 3.0, WoltLab Suite ships with a set of global helper functions that are
2393exposed on the <code>window</code>-object and thus are available regardless of the context.
2394They are meant to reduce code repetition and to increase readability by moving
2395potentially relevant parts to the front of an instruction.</p>
2396<h2 id="elements">Elements<a class="headerlink" href="#elements" title="Permanent link">#</a></h2>
2397<h3 id="elcreatetagname-string-element"><code>elCreate(tagName: string): Element</code><a class="headerlink" href="#elcreatetagname-string-element" title="Permanent link">#</a></h3>
2398<p>Creates a new element with the provided tag name.</p>
704cbc4a
WG
2399<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
2400<span class="normal">2</span>
2401<span class="normal">3</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><code><span class="kd">var</span> <span class="nx">element</span> <span class="o">=</span> <span class="nx">elCreate</span><span class="p">(</span><span class="s2">&quot;div&quot;</span><span class="p">);</span>
45ca63d0
TD
2402<span class="c1">// equals</span>
2403<span class="kd">var</span> <span class="nx">element</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;div&quot;</span><span class="p">);</span>
2404</code></pre></div>
704cbc4a 2405</td></tr></table>
45ca63d0
TD
2406<h3 id="elremoveelement-element"><code>elRemove(element: Element)</code><a class="headerlink" href="#elremoveelement-element" title="Permanent link">#</a></h3>
2407<p>Removes an element from its parent without returning it. This function will throw
2408an error if the <code>element</code> doesn't have a parent node.</p>
704cbc4a
WG
2409<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
2410<span class="normal">2</span>
2411<span class="normal">3</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><code><span class="nx">elRemove</span><span class="p">(</span><span class="nx">element</span><span class="p">);</span>
45ca63d0
TD
2412<span class="c1">// equals</span>
2413<span class="nx">element</span><span class="p">.</span><span class="nx">parentNode</span><span class="p">.</span><span class="nx">removeChild</span><span class="p">(</span><span class="nx">element</span><span class="p">);</span>
2414</code></pre></div>
704cbc4a 2415</td></tr></table>
45ca63d0
TD
2416<h3 id="elshowelement-element"><code>elShow(element: Element)</code><a class="headerlink" href="#elshowelement-element" title="Permanent link">#</a></h3>
2417<p>Attempts to show an element by removing the <code>display</code> CSS-property, usually used
2418in conjunction with the <code>elHide()</code> function.</p>
704cbc4a
WG
2419<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
2420<span class="normal">2</span>
2421<span class="normal">3</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><code><span class="nx">elShow</span><span class="p">(</span><span class="nx">element</span><span class="p">);</span>
45ca63d0
TD
2422<span class="c1">// equals</span>
2423<span class="nx">element</span><span class="p">.</span><span class="nx">style</span><span class="p">.</span><span class="nx">removeProperty</span><span class="p">(</span><span class="s2">&quot;display&quot;</span><span class="p">);</span>
2424</code></pre></div>
704cbc4a 2425</td></tr></table>
45ca63d0
TD
2426<h3 id="elhideelement-element"><code>elHide(element: Element)</code><a class="headerlink" href="#elhideelement-element" title="Permanent link">#</a></h3>
2427<p>Attempts to hide an element by setting the <code>display</code> CSS-property to <code>none</code>, this
2428is intended to be used with <code>elShow()</code> that relies on this behavior.</p>
704cbc4a
WG
2429<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
2430<span class="normal">2</span>
2431<span class="normal">3</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><code><span class="nx">elHide</span><span class="p">(</span><span class="nx">element</span><span class="p">);</span>
45ca63d0
TD
2432<span class="c1">// equals</span>
2433<span class="nx">element</span><span class="p">.</span><span class="nx">style</span><span class="p">.</span><span class="nx">setProperty</span><span class="p">(</span><span class="s2">&quot;display&quot;</span><span class="p">,</span> <span class="s2">&quot;none&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">);</span>
2434</code></pre></div>
704cbc4a 2435</td></tr></table>
45ca63d0
TD
2436<h3 id="eltoggleelement-element"><code>elToggle(element: Element)</code><a class="headerlink" href="#eltoggleelement-element" title="Permanent link">#</a></h3>
2437<p>Attempts to toggle the visibility of an element by examining the value of the
2438<code>display</code> CSS-property and calls either <code>elShow()</code> or <code>elHide()</code>.</p>
2439<h2 id="attributes">Attributes<a class="headerlink" href="#attributes" title="Permanent link">#</a></h2>
2440<h3 id="elattrelement-element-attribute-string-value-string-string"><code>elAttr(element: Element, attribute: string, value?: string): string</code><a class="headerlink" href="#elattrelement-element-attribute-string-value-string-string" title="Permanent link">#</a></h3>
2441<p>Sets or reads an attribute value, value are implicitly casted into strings and
2442reading non-existing attributes will always yield an empty string. If you want
2443to test for attribute existence, you'll have to fall-back to the native
2444<a href="https://developer.mozilla.org/en-US/docs/Web/API/Element/hasAttribute"><code>Element.hasAttribute()</code></a>
2445method.</p>
2446<p>You should read and set native attributes directly, such as <code>img.src</code> rather
2447than <code>img.getAttribute("src");</code>.</p>
704cbc4a
WG
2448<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
2449<span class="normal">2</span>
2450<span class="normal">3</span>
2451<span class="normal">4</span>
2452<span class="normal">5</span>
2453<span class="normal">6</span>
2454<span class="normal">7</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><code><span class="kd">var</span> <span class="nx">value</span> <span class="o">=</span> <span class="nx">elAttr</span><span class="p">(</span><span class="nx">element</span><span class="p">,</span> <span class="s2">&quot;some-attribute&quot;</span><span class="p">);</span>
45ca63d0
TD
2455<span class="c1">// equals</span>
2456<span class="kd">var</span> <span class="nx">value</span> <span class="o">=</span> <span class="nx">element</span><span class="p">.</span><span class="nx">getAttribute</span><span class="p">(</span><span class="s2">&quot;some-attribute&quot;</span><span class="p">);</span>
2457
2458<span class="nx">elAttr</span><span class="p">(</span><span class="nx">element</span><span class="p">,</span> <span class="s2">&quot;some-attribute&quot;</span><span class="p">,</span> <span class="s2">&quot;some value&quot;</span><span class="p">);</span>
2459<span class="c1">// equals</span>
2460<span class="nx">element</span><span class="p">.</span><span class="nx">setAttribute</span><span class="p">(</span><span class="s2">&quot;some-attribute&quot;</span><span class="p">,</span> <span class="s2">&quot;some value&quot;</span><span class="p">);</span>
2461</code></pre></div>
704cbc4a 2462</td></tr></table>
45ca63d0
TD
2463<h3 id="elattrboolelement-element-attribute-string-boolean"><code>elAttrBool(element: Element, attribute: string): boolean</code><a class="headerlink" href="#elattrboolelement-element-attribute-string-boolean" title="Permanent link">#</a></h3>
2464<p>Reads an attribute and converts it value into a boolean value, the strings <code>"1"</code>
2465and <code>"true"</code> will evaluate to <code>true</code>. All other values, including a missing attribute,
2466will return <code>false</code>.</p>
704cbc4a
WG
2467<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
2468<span class="normal">2</span>
2469<span class="normal">3</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><code><span class="k">if</span> <span class="p">(</span><span class="nx">elAttrBool</span><span class="p">(</span><span class="nx">element</span><span class="p">,</span> <span class="s2">&quot;some-attribute&quot;</span><span class="p">))</span> <span class="p">{</span>
45ca63d0
TD
2470 <span class="c1">// attribute is true-ish</span>
2471<span class="p">}</span>
2472</code></pre></div>
704cbc4a 2473</td></tr></table>
45ca63d0
TD
2474<h3 id="eldataelement-element-attribute-string-value-string-string"><code>elData(element: Element, attribute: string, value?: string): string</code><a class="headerlink" href="#eldataelement-element-attribute-string-value-string-string" title="Permanent link">#</a></h3>
2475<p>Short-hand function to read or set HTML5 <code>data-*</code>-attributes, it essentially
2476prepends the <code>data-</code> prefix before forwarding the call to <code>elAttr()</code>.</p>
704cbc4a
WG
2477<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
2478<span class="normal">2</span>
2479<span class="normal">3</span>
2480<span class="normal">4</span>
2481<span class="normal">5</span>
2482<span class="normal">6</span>
2483<span class="normal">7</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><code><span class="kd">var</span> <span class="nx">value</span> <span class="o">=</span> <span class="nx">elData</span><span class="p">(</span><span class="nx">element</span><span class="p">,</span> <span class="s2">&quot;some-attribute&quot;</span><span class="p">);</span>
45ca63d0
TD
2484<span class="c1">// equals</span>
2485<span class="kd">var</span> <span class="nx">value</span> <span class="o">=</span> <span class="nx">elAttr</span><span class="p">(</span><span class="nx">element</span><span class="p">,</span> <span class="s2">&quot;data-some-attribute&quot;</span><span class="p">);</span>
2486
2487<span class="nx">elData</span><span class="p">(</span><span class="nx">element</span><span class="p">,</span> <span class="s2">&quot;some-attribute&quot;</span><span class="p">,</span> <span class="s2">&quot;some value&quot;</span><span class="p">);</span>
2488<span class="c1">// equals</span>
2489<span class="nx">elAttr</span><span class="p">(</span><span class="nx">element</span><span class="p">,</span> <span class="s2">&quot;data-some-attribute&quot;</span><span class="p">,</span> <span class="s2">&quot;some value&quot;</span><span class="p">);</span>
2490</code></pre></div>
704cbc4a 2491</td></tr></table>
45ca63d0
TD
2492<h3 id="eldataboolelement-element-attribute-string-boolean"><code>elDataBool(element: Element, attribute: string): boolean</code><a class="headerlink" href="#eldataboolelement-element-attribute-string-boolean" title="Permanent link">#</a></h3>
2493<p>Short-hand function to convert a HTML5 <code>data-*</code>-attribute into a boolean value. It
2494prepends the <code>data-</code> prefix before forwarding the call to <code>elAttrBool()</code>.</p>
704cbc4a
WG
2495<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
2496<span class="normal">2</span>
2497<span class="normal">3</span>
2498<span class="normal">4</span>
2499<span class="normal">5</span>
2500<span class="normal">6</span>
2501<span class="normal">7</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><code><span class="k">if</span> <span class="p">(</span><span class="nx">elDataBool</span><span class="p">(</span><span class="nx">element</span><span class="p">,</span> <span class="s2">&quot;some-attribute&quot;</span><span class="p">))</span> <span class="p">{</span>
45ca63d0
TD
2502 <span class="c1">// attribute is true-ish</span>
2503<span class="p">}</span>
2504<span class="c1">// equals</span>
2505<span class="k">if</span> <span class="p">(</span><span class="nx">elAttrBool</span><span class="p">(</span><span class="nx">element</span><span class="p">,</span> <span class="s2">&quot;data-some-attribute&quot;</span><span class="p">))</span> <span class="p">{</span>
2506 <span class="c1">// attribute is true-ish</span>
2507<span class="p">}</span>
2508</code></pre></div>
704cbc4a 2509</td></tr></table>
45ca63d0
TD
2510<h2 id="selecting-elements">Selecting Elements<a class="headerlink" href="#selecting-elements" title="Permanent link">#</a></h2>
2511<div class="admonition warning">
2512<p class="admonition-title">Unlike libraries like jQuery, these functions will return <code>null</code> if an element is not found. You are responsible to validate if the element exist and to branch accordingly, invoking methods on the return value without checking for <code>null</code> will yield an error.</p>
2513</div>
2514<h3 id="elbyidid-string-element-null"><code>elById(id: string): Element | null</code><a class="headerlink" href="#elbyidid-string-element-null" title="Permanent link">#</a></h3>
2515<p>Selects an element by its <code>id</code>-attribute value.</p>
704cbc4a
WG
2516<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
2517<span class="normal">2</span>
2518<span class="normal">3</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><code><span class="kd">var</span> <span class="nx">element</span> <span class="o">=</span> <span class="nx">elById</span><span class="p">(</span><span class="s2">&quot;my-awesome-element&quot;</span><span class="p">);</span>
45ca63d0
TD
2519<span class="c1">// equals</span>
2520<span class="kd">var</span> <span class="nx">element</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="s2">&quot;my-awesome-element&quot;</span><span class="p">);</span>
2521</code></pre></div>
704cbc4a 2522</td></tr></table>
45ca63d0
TD
2523<h3 id="elbyselselector-string-context-element-element-null"><code>elBySel(selector: string, context?: Element): Element | null</code><a class="headerlink" href="#elbyselselector-string-context-element-element-null" title="Permanent link">#</a></h3>
2524<div class="admonition danger">
2525<p class="admonition-title">The underlying <code>querySelector()</code>-method works on the entire DOM hierarchy and can yield results outside of your context element! Please read and understand the MDN article on <a href="https://developer.mozilla.org/en-US/docs/Web/API/Element/querySelector#The_entire_hierarchy_counts"><code>Element.querySelector()</code></a> to learn more about this.</p>
2526</div>
2527<p>Select a single element based on a CSS selector, optionally limiting the results
2528to be a direct or indirect children of the context element.</p>
704cbc4a
WG
2529<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
2530<span class="normal">2</span>
2531<span class="normal">3</span>
2532<span class="normal">4</span>
2533<span class="normal">5</span>
2534<span class="normal">6</span>
2535<span class="normal">7</span>
2536<span class="normal">8</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><code><span class="kd">var</span> <span class="nx">element</span> <span class="o">=</span> <span class="nx">elBySel</span><span class="p">(</span><span class="s2">&quot;.some-element&quot;</span><span class="p">);</span>
45ca63d0
TD
2537<span class="c1">// equals</span>
2538<span class="kd">var</span> <span class="nx">element</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">querySelector</span><span class="p">(</span><span class="s2">&quot;.some-element&quot;</span><span class="p">);</span>
2539
2540<span class="c1">// limiting the scope to a context element:</span>
2541<span class="kd">var</span> <span class="nx">element</span> <span class="o">=</span> <span class="nx">elBySel</span><span class="p">(</span><span class="s2">&quot;.some-element&quot;</span><span class="p">,</span> <span class="nx">context</span><span class="p">);</span>
2542<span class="c1">// equals</span>
2543<span class="kd">var</span> <span class="nx">element</span> <span class="o">=</span> <span class="nx">context</span><span class="p">.</span><span class="nx">querySelector</span><span class="p">(</span><span class="s2">&quot;.some-element&quot;</span><span class="p">);</span>
2544</code></pre></div>
704cbc4a 2545</td></tr></table>
45ca63d0
TD
2546<h3 id="elbyselallselector-string-context-element-callback-element-element-void-nodelist"><code>elBySelAll(selector: string, context?: Element, callback: (element: Element) =&gt; void): NodeList</code><a class="headerlink" href="#elbyselallselector-string-context-element-callback-element-element-void-nodelist" title="Permanent link">#</a></h3>
2547<div class="admonition danger">
2548<p class="admonition-title">The underlying <code>querySelector()</code>-method works on the entire DOM hierarchy and can yield results outside of your context element! Please read and understand the MDN article on <a href="https://developer.mozilla.org/en-US/docs/Web/API/Element/querySelector#The_entire_hierarchy_counts"><code>Element.querySelector()</code></a> to learn more about this.</p>
2549</div>
2550<p>Finds and returns a <code>NodeList</code> containing all elements that match the provided
2551CSS selector. Although <code>NodeList</code> is an array-like structure, it is not possible
2552to iterate over it using array functions, including <code>.forEach()</code> which is not
2553available in Internet Explorer 11.</p>
704cbc4a
WG
2554<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
2555<span class="normal">2</span>
2556<span class="normal">3</span>
2557<span class="normal">4</span>
2558<span class="normal">5</span>
2559<span class="normal">6</span>
2560<span class="normal">7</span>
2561<span class="normal">8</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><code><span class="kd">var</span> <span class="nx">elements</span> <span class="o">=</span> <span class="nx">elBySelAll</span><span class="p">(</span><span class="s2">&quot;.some-element&quot;</span><span class="p">);</span>
45ca63d0
TD
2562<span class="c1">// equals</span>
2563<span class="kd">var</span> <span class="nx">elements</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">querySelectorAll</span><span class="p">(</span><span class="s2">&quot;.some-element&quot;</span><span class="p">);</span>
2564
2565<span class="c1">// limiting the scope to a context element:</span>
2566<span class="kd">var</span> <span class="nx">elements</span> <span class="o">=</span> <span class="nx">elBySelAll</span><span class="p">(</span><span class="s2">&quot;.some-element&quot;</span><span class="p">,</span> <span class="nx">context</span><span class="p">);</span>
2567<span class="c1">// equals</span>
2568<span class="kd">var</span> <span class="nx">elements</span> <span class="o">=</span> <span class="nx">context</span><span class="p">.</span><span class="nx">querySelectorAll</span><span class="p">(</span><span class="s2">&quot;.some-element&quot;</span><span class="p">);</span>
2569</code></pre></div>
704cbc4a 2570</td></tr></table>
45ca63d0
TD
2571<h4 id="callback-to-iterate-over-elements">Callback to Iterate Over Elements<a class="headerlink" href="#callback-to-iterate-over-elements" title="Permanent link">#</a></h4>
2572<p><code>elBySelAll()</code> supports an optional third parameter that expects a callback function
2573that is invoked for every element in the list.</p>
704cbc4a
WG
2574<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
2575<span class="normal">2</span>
2576<span class="normal">3</span>
2577<span class="normal">4</span>
2578<span class="normal">5</span>
2579<span class="normal">6</span>
2580<span class="normal">7</span>
2581<span class="normal">8</span>
2582<span class="normal">9</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><code><span class="c1">// set the 2nd parameter to `undefined` or `null` to query the whole document</span>
45ca63d0
TD
2583<span class="nx">elBySelAll</span><span class="p">(</span><span class="s2">&quot;.some-element&quot;</span><span class="p">,</span> <span class="kc">undefined</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">element</span><span class="p">)</span> <span class="p">{</span>
2584 <span class="c1">// is called for each element</span>
2585<span class="p">});</span>
2586
2587<span class="c1">// limiting the scope to a context element:</span>
2588<span class="nx">elBySelAll</span><span class="p">(</span><span class="s2">&quot;.some-element&quot;</span><span class="p">,</span> <span class="nx">context</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">element</span><span class="p">)</span> <span class="p">{</span>
2589 <span class="c1">// is called for each element</span>
2590<span class="p">});</span>
2591</code></pre></div>
704cbc4a 2592</td></tr></table>
45ca63d0
TD
2593<h3 id="elclosestelement-element-selector-string-element-null"><code>elClosest(element: Element, selector: string): Element | null</code><a class="headerlink" href="#elclosestelement-element-selector-string-element-null" title="Permanent link">#</a></h3>
2594<p>Returns the first <code>Element</code> that matches the provided CSS selector, this will
2595return the provided element itself if it matches the selector.</p>
704cbc4a
WG
2596<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
2597<span class="normal">2</span>
2598<span class="normal">3</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><code><span class="kd">var</span> <span class="nx">element</span> <span class="o">=</span> <span class="nx">elClosest</span><span class="p">(</span><span class="nx">context</span><span class="p">,</span> <span class="s2">&quot;.some-element&quot;</span><span class="p">);</span>
45ca63d0
TD
2599<span class="c1">// equals</span>
2600<span class="kd">var</span> <span class="nx">element</span> <span class="o">=</span> <span class="nx">context</span><span class="p">.</span><span class="nx">closest</span><span class="p">(</span><span class="s2">&quot;.some-element&quot;</span><span class="p">);</span>
2601</code></pre></div>
704cbc4a 2602</td></tr></table>
45ca63d0
TD
2603<h4 id="text-nodes">Text Nodes<a class="headerlink" href="#text-nodes" title="Permanent link">#</a></h4>
2604<p>If the provided context is a <code>Text</code>-node, the function will move the context to
2605the parent element before applying the CSS selector. If the <code>Text</code> has no parent,
2606<code>null</code> is returned without evaluating the selector.</p>
2607<h3 id="elbyclassclassname-string-context-element-nodelist"><code>elByClass(className: string, context?: Element): NodeList</code><a class="headerlink" href="#elbyclassclassname-string-context-element-nodelist" title="Permanent link">#</a></h3>
2608<p>Returns a live <code>NodeList</code> containing all elements that match the provided CSS
2609class now <em>and</em> in the future! The collection is automatically updated whenever
2610an element with that class is added or removed from the DOM, it will also include
2611elements that get dynamically assigned or removed this CSS class.</p>
2612<p>You absolutely need to understand that this collection is dynamic, that means that
2613elements can and will be added and removed from the collection <em>even while</em> you
2614iterate over it. There are only very few cases where you would need such a collection,
2615almost always <code>elBySelAll()</code> is what you're looking for.</p>
704cbc4a
WG
2616<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
2617<span class="normal">2</span>
2618<span class="normal">3</span>
2619<span class="normal">4</span>
2620<span class="normal">5</span>
2621<span class="normal">6</span>
2622<span class="normal">7</span>
2623<span class="normal">8</span>
2624<span class="normal">9</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><code><span class="c1">// no leading dot!</span>
45ca63d0
TD
2625<span class="kd">var</span> <span class="nx">elements</span> <span class="o">=</span> <span class="nx">elByClass</span><span class="p">(</span><span class="s2">&quot;some-element&quot;</span><span class="p">);</span>
2626<span class="c1">// equals</span>
2627<span class="kd">var</span> <span class="nx">elements</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">getElementsByClassName</span><span class="p">(</span><span class="s2">&quot;some-element&quot;</span><span class="p">);</span>
2628
2629<span class="c1">// limiting the scope to a context element:</span>
2630<span class="kd">var</span> <span class="nx">elements</span> <span class="o">=</span> <span class="nx">elByClass</span><span class="p">(</span><span class="s2">&quot;some-element&quot;</span><span class="p">,</span> <span class="nx">context</span><span class="p">);</span>
2631<span class="c1">// equals</span>
2632<span class="kd">var</span> <span class="nx">elements</span> <span class="o">=</span> <span class="nx">context</span><span class="p">.</span><span class="nx">getElementsByClassName</span><span class="p">(</span><span class="s2">&quot;.some-element&quot;</span><span class="p">);</span>
2633</code></pre></div>
704cbc4a 2634</td></tr></table>
45ca63d0
TD
2635<h3 id="elbytagtagname-string-context-element-nodelist"><code>elByTag(tagName: string, context?: Element): NodeList</code><a class="headerlink" href="#elbytagtagname-string-context-element-nodelist" title="Permanent link">#</a></h3>
2636<p>Returns a live <code>NodeList</code> containing all elements with the provided tag name now
2637<em>and</em> in the future! Please read the remarks on <code>elByClass()</code> above to understand
2638the implications of this.</p>
704cbc4a
WG
2639<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
2640<span class="normal">2</span>
2641<span class="normal">3</span>
2642<span class="normal">4</span>
2643<span class="normal">5</span>
2644<span class="normal">6</span>
2645<span class="normal">7</span>
2646<span class="normal">8</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><code><span class="kd">var</span> <span class="nx">elements</span> <span class="o">=</span> <span class="nx">elByTag</span><span class="p">(</span><span class="s2">&quot;div&quot;</span><span class="p">);</span>
45ca63d0
TD
2647<span class="c1">// equals</span>
2648<span class="kd">var</span> <span class="nx">elements</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">getElementsByTagName</span><span class="p">(</span><span class="s2">&quot;div&quot;</span><span class="p">);</span>
2649
2650<span class="c1">// limiting the scope to a context element:</span>
2651<span class="kd">var</span> <span class="nx">elements</span> <span class="o">=</span> <span class="nx">elByTag</span><span class="p">(</span><span class="s2">&quot;div&quot;</span><span class="p">,</span> <span class="nx">context</span><span class="p">);</span>
2652<span class="c1">// equals</span>
2653<span class="kd">var</span> <span class="nx">elements</span> <span class="o">=</span> <span class="nx">context</span><span class="p">.</span><span class="nx">getElementsByTagName</span><span class="p">(</span><span class="s2">&quot;div&quot;</span><span class="p">);</span>
2654</code></pre></div>
704cbc4a 2655</td></tr></table>
45ca63d0
TD
2656<h2 id="utility-functions">Utility Functions<a class="headerlink" href="#utility-functions" title="Permanent link">#</a></h2>
2657<h3 id="elinnererrorelement-element-errormessage-string-ishtml-boolean-element-null">`elInnerError(element: Element, errorMessage?: string, isHtml?: boolean): Element | null``<a class="headerlink" href="#elinnererrorelement-element-errormessage-string-ishtml-boolean-element-null" title="Permanent link">#</a></h3>
2658<p>Unified function to display and remove inline error messages for input elements,
2659please read the <a href="../../migration/wsc30/javascript/#helper-function-for-inline-error-messages">section in the migration docs</a>
2660to learn more about this function.</p>
2661<h2 id="string-extensions">String Extensions<a class="headerlink" href="#string-extensions" title="Permanent link">#</a></h2>
2662<h3 id="hashcode-string"><code>hashCode(): string</code><a class="headerlink" href="#hashcode-string" title="Permanent link">#</a></h3>
2663<p>Computes a numeric hash value of a string similar to Java's <code>String.hashCode()</code> method.</p>
704cbc4a
WG
2664<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
2665<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><code><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;Hello World&quot;</span><span class="p">.</span><span class="nx">hashCode</span><span class="p">());</span>
45ca63d0
TD
2666<span class="c1">// outputs: -862545276</span>
2667</code></pre></div>
704cbc4a 2668</td></tr></table>
45ca63d0 2669
4a5c32e1
WG
2670
2671
2672
2673<hr>
2674<div class="md-source-date">
2675 <small>
2676
2677 Last update: 2021-01-08
2678
2679 </small>
2680</div>
2681
2682
45ca63d0
TD
2683
2684
2685
2686
2687
2688
2689 </article>
2690 </div>
2691 </div>
fb962f09 2692
45ca63d0
TD
2693 </main>
2694
2695
2696<footer class="md-footer">
2697
2698 <nav class="md-footer__inner md-grid" aria-label="Footer">
2699
2700 <a href="../legacy-api/" class="md-footer__link md-footer__link--prev" rel="prev">
2701 <div class="md-footer__button md-icon">
2702 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
2703 </div>
2704 <div class="md-footer__title">
2705 <div class="md-ellipsis">
2706 <span class="md-footer__direction">
2707 Previous
2708 </span>
2709 Legacy API
2710 </div>
2711 </div>
2712 </a>
2713
2714
2715 <a href="../code-snippets/" class="md-footer__link md-footer__link--next" rel="next">
2716 <div class="md-footer__title">
2717 <div class="md-ellipsis">
2718 <span class="md-footer__direction">
2719 Next
2720 </span>
2721 Code Snippets
2722 </div>
2723 </div>
2724 <div class="md-footer__button md-icon">
2725 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"/></svg>
2726 </div>
2727 </a>
2728
2729 </nav>
2730
2731 <div class="md-footer-meta md-typeset">
2732 <div class="md-footer-meta__inner md-grid">
2733 <div class="md-footer-copyright">
2734
2735 <div class="md-footer-copyright__highlight">
2736 Copyright © 2020 WoltLab GmbH
2737 </div>
2738
2739 Made with
2740 <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
2741 Material for MkDocs
2742 </a>
fb88dc6e 2743
45ca63d0
TD
2744 </div>
2745 <div class="md-footer-copyright">
2746 <a href="https://www.woltlab.com/legal-notice/">Legal Notice</a>
2747 <a href="https://www.woltlab.com/privacy-policy/">Privacy Policy</a>
2748</div>
2749 </div>
2750 </div>
2751</footer>
2752
2753 </div>
2754 <div class="md-dialog" data-md-component="dialog">
2755 <div class="md-dialog__inner md-typeset"></div>
2756 </div>
fb962f09 2757 <script id="__config" type="application/json">{"base": "../..", "features": [], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}, "search": "../../assets/javascripts/workers/search.fe42c31b.min.js", "version": {"provider": "mike"}}</script>
45ca63d0
TD
2758
2759
a4835aa6 2760 <script src="../../assets/javascripts/bundle.4ea5477f.min.js"></script>
45ca63d0
TD
2761
2762
2763 </body>
2764</html>