Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Возможно ли это вообще? (https://javascript.ru/forum/misc/36346-vozmozhno-li-ehto-voobshhe.html)

notsoft 12.03.2013 21:16

Возможно ли это вообще?
 
Есть такая несложная, но "ооочень" большая функция:
function schet()
{
var n1=document.getElementsByName("n1")[0].value;
var c1=document.getElementsByName("c1")[0].value;
var z1=document.getElementsByName("z1")[0].value;
...
var n200=document.getElementsByName("n200")[0].value;
var c200=document.getElementsByName("c200")[0].value;
var z200=document.getElementsByName("z200")[0].value;

if (!z1&&z1>0) {n1=document.getElementsByName("n1")[0].value="";
c1=z1="";}
...
if (!z200&&z200>0) {n200=document.getElementsByName("n200")[0].value="";
c200=z200="";}
var rez=c1*z1+c2*z2+...c200*z200;
document.getElementById("rezult").innerHTML='<h1>R EZULTAT: '+rez'+</h1>';
}
</script>

Вот у меня вопрос: возможно ли это сделать как-то короче? Не таким "индийским" кодом как у меня. Как должен выглядеть цикл для этой функции? Смущают document.getElementsByName.

Hoshinokoe 12.03.2013 21:25

notsoft,

Можно.
function schet() {
    var res = 0;

    for (var i = 1; i <= 200; i++) {
        var n = document.getElementsByName("n" + i)[0].value;
        var c = document.getElementsByName("c" + i)[0].value;
        var z = document.getElementsByName("z" + i)[0].value;

        if (!z && z > 0) {
            n = document.getElementsByName("n" + i)[0].value = "";
            c = z = "";
        }

        res += c * z;
    }
    document.getElementById("rezult").innerHTML='<h1>R EZULTAT: '+res +'</h1>';
}

notsoft 12.03.2013 22:43

Ура! Но, блин, почему когда кто-то сделал, кажется что все так просто! А я как баран смотрел на свой код и понять не мог. Спасибо! +в карму!

danik.js 13.03.2013 06:06

Цитата:

Сообщение от Hoshinokoe
!z && z > 0

Разве это условие может быть истинным когда-либо?

notsoft 15.03.2013 11:08

Цитата:

Сообщение от danik.js (Сообщение 240308)
Разве это условие может быть истинным когда-либо?

Нет, это я перемудрил. Можно просто z>0.


Часовой пояс GMT +3, время: 13:54.