1+ // selecting each element
2+ var rangeValue = document . querySelector ( '.form-control-range' ) ;
3+ var checkCapitalLetters = document . querySelector ( '#defaultCheck2' ) ;
4+ var checkSymbols = document . querySelector ( '#defaultCheck3' ) ;
5+ var checkNumbers = document . querySelector ( '#defaultCheck4' ) ;
6+ var textDiv = document . querySelector ( '.showPassword' ) ;
7+
8+
9+
10+ //click-event in submit btn
11+ document . querySelector ( '.submit' ) . addEventListener ( 'click' , generatePasswords ) ;
12+
13+
14+
15+ // function to generate password
16+ function generatePasswords ( ) {
17+
18+ textDiv . innerHTML = "Your brand-new password: " ;
19+
20+ var passwordArr = [ ] ;
21+ var smletter = 'abcdefghijklmnpqrstuvwxyz' ;
22+ var capletter = 'ABCDEFGHIJKLMNPQRSTUVWXYZ' ;
23+ var sym = '!@#$%^&*()' ;
24+ var num = '0123456789' ;
25+ var sumOfall = smletter + capletter + sym + num ;
26+
27+
28+ // getting a random set for the password array
29+ for ( i = 0 ; i <= rangeValue . value / 4 ; i ++ )
30+ {
31+
32+ passwordArr . push ( smletter . charAt ( Math . floor ( ( Math . random ( ) * 26 ) + 1 ) ) ) ;
33+
34+ if ( checkCapitalLetters . checked )
35+ {
36+ passwordArr . push ( capletter . charAt ( Math . floor ( ( Math . random ( ) * 26 ) + 1 ) ) ) ;
37+ } ;
38+
39+ if ( checkNumbers . checked ) {
40+ passwordArr . push ( num . charAt ( Math . floor ( ( Math . random ( ) * 10 ) + 1 ) ) ) ;
41+ }
42+
43+ if ( checkSymbols . checked ) {
44+ passwordArr . push ( sym . charAt ( Math . floor ( ( Math . random ( ) * 10 ) + 1 ) ) ) ;
45+ }
46+ } ;
47+
48+
49+ // getting the leftover elements
50+ if ( passwordArr . length !== rangeValue . value ) {
51+ for ( i = 0 ; i < ( rangeValue . value - passwordArr . length ) ; i ++ ) {
52+
53+ passwordArr . push ( sumOfall . charAt ( Math . floor ( ( Math . random ( ) * 26 ) + 1 ) ) ) ;
54+
55+ }
56+
57+ }
58+
59+
60+ // to shuffle the array's element - Fisher-Yates algorithm.
61+ for ( i = passwordArr . length - 1 ; i > 0 ; i -- ) {
62+
63+ var j = Math . floor ( Math . random ( ) * i ) ;
64+
65+ var temp = passwordArr [ i ] ;
66+
67+ passwordArr [ i ] = passwordArr [ j ] ;
68+
69+ passwordArr [ j ] = temp ;
70+
71+ } ;
72+
73+ passwordArr . forEach ( cur => textDiv . innerHTML += cur ) ;
74+
75+ } ;
0 commit comments