 |

15.07.2019, 05:42
|
|
Познавший АНТИЧАТ
Регистрация: 28.10.2017
Сообщений: 1,778
С нами:
4495573
Репутация:
183
|
|
Короче, вчера первый раз решил написать что-нибудь с использованием JavaScript. Нужно было кое-что реализовать.
В общем, есть несколько input'ов и checkbox, после нажатия которых определенная кнопка должна становиться активной.
Собственно, имеется небольшой код и вопрос заключается в оптимизации. На мой взгляд код можно смело именовать в pizdec.js.
Что можете посоветовать для оптимизации, может быть какие-нибудь другие пути решения проблемы?
Код находится здесь: https://gist.github.com/Pakulichev/0857ddac86309f11b5e92bf193cfeeaa.
|
|
|

15.07.2019, 11:14
|
|
Познающий
Регистрация: 21.09.2016
Сообщений: 77
С нами:
5074272
Репутация:
63
|
|
Через массив пробовал?
|
|
|

15.07.2019, 11:20
|
|
Познавший АНТИЧАТ
Регистрация: 28.10.2017
Сообщений: 1,778
С нами:
4495573
Репутация:
183
|
|
Сообщение от RoffDaniel
Через массив пробовал?
Ещё более спорное решение. Да и вообще не знаю каким образом можно хуки с массивами связать.
|
|
|

15.07.2019, 12:18
|
|
Познающий
Регистрация: 21.09.2016
Сообщений: 77
С нами:
5074272
Репутация:
63
|
|
У меня идея только приравнять хуки к массиву, а потом спрашивать, какой из элементов массива не равен пустоте)
|
|
|

20.07.2019, 03:05
|
|
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами:
6915558
Репутация:
183
|
|
Почему именно голый JS?
Нет смысла писать код, который будет всё время в одну строчку. Лол. Ты всегда можешь заюзать minifier.
Раз уж голый JS, то тогда вешай события на элементы (
), будет легче работать с элементом в функции.
Через массив/объекты это будет решить легче. На это не нужно много производительности (в пределах разумного, конечно).
Вот код, который частично тестил (до создания элементов не дошло, мне стало лень):
JavaScript :
Код:
var
buttongo
=
document
.
getElementById
(
'buttongo'
)
;
if
(
!
buttongo
)
{
throw
'Can not to find #buttongo'
;
}
var
validateValue
=
function
(
validateEl
)
{
return
validateEl
.
docElement
.
value
!==
null
&&
validateEl
.
docElement
.
value
!=
''
;
}
var
validateElements
=
{
nname
:
{
docElement
:
document
.
getElementById
(
'nname'
)
,
isValid
:
false
}
,
surname
:
{
docElement
:
document
.
getElementById
(
'surname'
)
,
isValid
:
false
}
,
number
:
{
docElement
:
document
.
getElementById
(
'number'
)
,
isValid
:
false
}
,
email
:
{
docElement
:
document
.
getElementById
(
'email'
)
,
isValid
:
false
}
,
checkrules
:
{
docElement
:
document
.
getElementById
(
'checkrules'
)
,
isValid
:
false
,
validateFn
:
function
(
)
{
return
this
.
docElement
.
checked
;
}
}
}
;
var
checkButton
=
function
(
issuer
)
/* FIXME: issuer isn't used */
{
var
validCounter
=
0
,
totalElements
=
0
;
// if we're using clear js
for
(
var
validateEl
in
validateElements
)
{
var
self
=
validateElements
[
validateEl
]
;
if
(
!
self
.
docElement
)
{
throw
'Unknown #'
+
validateEl
+
' element'
;
}
if
(
self
.
validateFn
!==
undefined
)
{
/*console.log(self);*/
self
.
isValid
=
self
.
validateFn
(
)
;
}
else
{
self
.
isValid
=
validateValue
(
self
)
;
}
if
(
self
.
isValid
)
validCounter
++
;
totalElements
++
;
}
if
(
validCounter
==
totalElements
)
{
buttongo
.
classList
.
add
(
'disabled'
)
;
}
else
{
buttongo
.
classList
.
remove
(
'disabled'
)
;
}
}
/** Ссылаясь на то, что на элементы уже повешены события в HTML **/
/*checkrules.onclick = checkButton;
nname.onchange = checkButton;
surname.onchange = checkButton;
number.onchange = checkButton;
email.onchange = checkButton;*/
|
|
|
|
 |
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|