Я не знаю, есть ли более короткий путь, так как у меня нет опыта работы с ScratchPad, но, поскольку вы снова и снова программируете один и тот же шаг, вы можете (если объект myForm находится в области видимости) сделатьлогическая функция (которая также может устанавливать значение), например:
function matchReg(field, num){
if (myForm[num].value.match(field) && myForm[num].value.length >= 2){
//attribute setting can also be done out of function, with boolean value
myForm[num].setAttribute("style","outline: unset");
return true;
} else {
myForm[num].setAttribute("style","outline: 2px solid crimson");
return false;
}
}
и вызывать ее так:
matchReg(onlyText, 0);
matchReg(onlyText, 1);
//etc...
Если это все еще слишком сложное кодирование, вы можетенаписать массив или какой-либо другой тип итерируемого объекта (например, словарь или двумерный массив), например:
//js 2d array
var toIterate = [
[onlyText, 0],
[onlyText, 1],
[onlyEmail,2],
//etc....
]
//js dictionary object
var toIterate = {
0: onlyText,
1: onlyText,
2: onlyEmail,
//etc....
}
и выполнить итерацию по нему:
//for the dict:
Object.keys(toIterate).forEach(key => {
matchReg(toIterate[key],key);
});
//for the array-object:
for (var i = 0; i < toIterate.length; i++) {
matchReg(toIterate[i][0],toIterate[i][1])
}
(видно наhttps://stackoverflow.com/a/41550077)
В общем, есть много способов решить эту проблему, и каждый программист должен видеть, что что-то происходит, когда появляются очень похожие строки кода. Это обычная практикавозьмите фрагмент кода, который появляется снова и снова, и спроектируйте для него функцию, но я думаю, вы уже знали об этом.
также, исходя из фона Java, представленные здесь функции могут быть неисправныили жене эффективно по времени.