2013-07-25 2 views
-2

Я бы просто прокомментировал ответ, который я уже нашел; однако я недавно создал учетную запись и не имею требуемой репутации. Ответ на эту ссылку:Соберите переменные с помощью цикла

Calculate average of 5 numbers using 2 functions and onchange event handlers

Если вы прокрутите вниз, то ответ дается RobG. В своем сценарии он упоминает, что вы можете собирать переменные в цикле вместо их ручного вызова, но он не говорит, как это сделать. Если бы кто-нибудь мог дать мне некоторое представление о том, как это сделать, мы будем очень благодарны.

Заранее спасибо, потому что я провел около 7 часов, пытаясь понять это.

вот код с другой страницы:

function calcAvg(one, two, three, four, five) { 

    // Note that these could be collected using a loop 
    var one = document.totalf.one.value; 
    var two = document.totalf.two.value; 
    var three = document.totalf.three.value; 
    var four = document.totalf.four.value; 
    var five = document.totalf.five.value; 

    // At this point you'd normally validate the values retrieved from 
    // the form and deal with any junk (remove it, stop processing, 
    // ask for another value, etc.) 

    // pass values to performCalc and store result 
    var average = performCalc([one, two, three, four, five]); 

    // Now do something with the result 
    document.totalf.res.value = average; 

    // There's no need for a return statement as 
    // the function doesn't need to return a value 
    // Though an empty return statement is harmless 
    // return 
     } 
+5

Это комментарий к существующий ответ. –

+2

@limelights хорошо этот вопрос мог бы быть лучше подготовлен (код из другого мог быть скопирован, во-первых,), но другой ответ не включает ответ, который здесь запрашивается. – Pointy

+0

Я бы сказал, что этот вопрос может быть действительным, если вы его перефразировали. Скорее всего, он скоро будет закрыт. – Stephan

ответ

0

Основываясь на том, что я понял из ваших поисков, вы можете использовать массив следующим образом:

var arr = [] 

for(int i; i<n; i++) 
{ 
    arr[i] = //Whatever the variable must hold 
} 

И вы могли бы сделать массив из входных объектов (один, два, три, четыре, пять) и использовать их в цикле.

1

В своем сценарии он упоминает, что вы можете получить переменные в цикле вместо вызова их вручную, но он не говорит, как это сделать.

Это действительно так, но в 2 этапа.

  1. calcAvg() собирает переменные в качестве Array который передается performCalc():

    var average = performCalc([one, two, three, four, five]); 
    

    [...] в этом фрагменте является Array literal, и в этом случае, создает newArray со значениями 5 входных как элементы.

    Это похоже на использование Array constructor:

    var average = performCalc(new Array(one, two, three, four, five)); 
    
  2. performCalc() затем берет Array, принятый в качестве values аргумента, и петли над ними:

    // Loop over values, note that values are strings so they 
    // need to be converted to numbers before being added 
    for (var i=0, iLen=values.length; i<iLen; i++) { 
    
        // the unary "+" operator will cooerce the value to a number 
        // In real life, the value would be checked before being added 
        // to avoid errors from junk input 
        sum += +values[i]; 
    } 
    
+0

Хорошо, возможно ли создать массив переменных, в котором цикл while ограничивает количество создаваемых переменных? Единственный улов в том, что цикл while является функцией переменной в php, так есть ли способ переместить переменную php в javascript? – user2618927

+0

@ user2618927 Цикл работает на основе свойства '' length' 'Array' (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/length) ('iLen = values.length; i

+0

ладно спасибо – user2618927

Смежные вопросы