Оптимизация кода
Уважаемые форумчане, я 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; } } } } |
oryth,
может не надо? |
почему не надо? так можно его оптимизировать?
|
можно ли сделать чтобы был один или два if внутри цикла?
|
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) }); |
рони,
спасибо большое |
рони,
отлично, почитал про every и call, на подобие (с другими условиями и ) заменил в другом месте. Еще раз большое спасибо |
Доброго времени суток!
Только начал изучать 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,
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); |
Большое спасибо!
Попытавшись проанализировать ваш код я понял, что вы пошли путем создания объекта, но дойдя до строки 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); |
Часовой пояс GMT +3, время: 04:33. |