部分功能代码未执行

时间:2014-11-09 18:23:08

标签: javascript html

我在javascript中为学校项目做一个简单的网络应用程序。这似乎很容易,但是当我调用一个函数时,并不是所有代码行都被执行。它似乎在for cicle之后停止了。事实上,点击按钮后没有任何反应。

function calcola(){
    var texts = document.getElementsByTagName('input');
    var selects = document.getElementsByTagName('select');
    var ang;
    var v;
    var h;
    for (var i=0;i<texts.length+selects.length;i++) {
            if (selects[i].id == 'a') {
                ang = selects[i].value;
            }
            if (selects[i].id == 'v') {
                v = selects[i].value;   
            }
            if (texts[i].id == 'h') {
                h = texts[i].value;
            }
    }
    var vy0 = v*Math.sin(ang*(Math.PI/180));
    var t1 = vy0/9.81;
    var h1 = (vy0*t1)/2;
    var ht = h + h1;
    var t2 = Math.pow((2*ht)/9.81,0.5);
    var tt = t1 + t2;
    var vx0 = v*Math.cos(ang*(Math.PI/180));
    var x = vx0*tt;
    document.body.innerHTML = "<center style='font-size: 4.5em; font-family: monospace'>Distanza percorsa: " + Math.round(x*100)/100 + " m</center><br><center style='font-size: 4.5em; font-family: monospace'>Velocita' Iniziale: " + v + " m/s</center><br><center style='font-size: 4.5em; font-family: monospace'>Angolazione: " + a + "&deg;</center><br><center style='font-size: 4.5em; font-family: monospace'>Newton Di Spinta: " + "..." + " N</center>";
}

1 个答案:

答案 0 :(得分:1)

你循环遍历“文本”和“选择”(texts.length + choices.length)的总数 - 当你使用我索引时,这几乎肯定会导致数组越界错误

你可能想要最低限度:

for (var i=0;i<Math.min(texts.length,selects.length);i++) {...

或两个单独的循环迭代每个元素和元素。