|
|

10.09.2016, 23:22
|
|
Интересующийся
|
|
Регистрация: 04.08.2014
Сообщений: 29
|
|
|
Оптимизация кода
Уважаемые форумчане, я JavaScript плохо знаю, помогите оптимизировать участок кода:
err='';
var elems = document.querySelectorAll('[data-text]');
for (var i=0; i < elems.length;i++){
if (elems[i].hasAttribute('required')){
if (elems[i].getAttribute('type') == 'checkbox'){
if (elems[i].checked == false){
err = elems[i].dataset.text;
break;
}
}else{
if (elems[i].value == ''){
err = elems[i].dataset.text;
break;
}
}
}
}
|
|

10.09.2016, 23:41
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,155
|
|
|
oryth,
может не надо?
|
|

10.09.2016, 23:44
|
|
Интересующийся
|
|
Регистрация: 04.08.2014
Сообщений: 29
|
|
|
почему не надо? так можно его оптимизировать?
|
|

10.09.2016, 23:46
|
|
Интересующийся
|
|
Регистрация: 04.08.2014
Сообщений: 29
|
|
|
можно ли сделать чтобы был один или два if внутри цикла?
|
|

11.09.2016, 00:05
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,155
|
|
oryth,
err = "";
[].every.call(document.querySelectorAll("[data-text][required]"), function(a) {
return a.checked && "checkbox" == a.type || a.value && "checkbox" != a.type || !(err = a.dataset.text)
});
|
|

11.09.2016, 00:20
|
|
Интересующийся
|
|
Регистрация: 04.08.2014
Сообщений: 29
|
|
|
рони,
спасибо большое
|
|

11.09.2016, 01:00
|
|
Интересующийся
|
|
Регистрация: 04.08.2014
Сообщений: 29
|
|
|
рони,
отлично, почитал про every и call, на подобие (с другими условиями и ) заменил в другом месте. Еще раз большое спасибо
|
|

31.08.2019, 18:04
|
|
Новичок на форуме
|
|
Регистрация: 31.08.2019
Сообщений: 3
|
|
|
Доброго времени суток!
Только начал изучать JS. В книге была дана такая задачка:
Нужно было найти определенные буквы в тексте и заменить их на цифры с помощью цикла for.
Можно ли написать этот код короче и как?
var input = "javascript is awesome";
var output = "";
for (var i = 0; i < input.length; i++){
var outputSign = input[i];
if (outputSign == "a"){
output += 4;
} else if (outputSign == "e"){
output += 3;
} else if (outputSign == "i"){
output += 1;
} else if (outputSign == "o"){
output += 0;
} else {
output += outputSign;
};
};
document.write(output);
Последний раз редактировалось Miha-78, 31.08.2019 в 18:16.
|
|

31.08.2019, 18:17
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,155
|
|
Miha-78,
var obj = {a : 7, b : 12, c : 38}, str = "aaccddcc";
str = str.replace(/([abc])/g, function(a, b) {
return b in obj ? obj[b] : b
})
alert(str);
|
|

31.08.2019, 19:04
|
|
Новичок на форуме
|
|
Регистрация: 31.08.2019
Сообщений: 3
|
|
|
Большое спасибо!
Попытавшись проанализировать ваш код я понял, что вы пошли путем создания объекта, но дойдя до строки 5 там где открывается скобка (, понимать стало труднее ).
Строка 4 это вы создали переменную я правильно понял?
1. var obj = {
2. a : 7,
3. b : 12,
4. c : 38
},
4. str = "aaccddcc";
5. str = str.replace(/([abc])/g, function(a, b) {
return b in obj ? obj[b] :b
})
alert(str);
|
|
|
|