2011-03-15 4 views
1

У меня есть задание, в котором мне нужно создать два массива (NAME и SALES). Мне нужно заполнить массив из 100 компонентов. Затем мне нужно вычислить валовую оплату с помощью функции calcPay(). У меня возникли проблемы с выяснением того, как заставить функцию работать, она либо печатает итоговую таблицу с столбцом Pay как «uneclared», либо просто перестает работать, когда дело доходит до этого места, независимо от того, сколько NAMES и SALES введено в массив. У меня есть это в сценарии тела:Новое в массивах javascript, нужна помощь

var i=0; 
var NAME = new Array(); 
var SALES = new Array(); 
do 
{ 
    NAME[i]=getName(); 
    SALES[i]=getSales(); 
    i++; 
    var again=confirm("Would you like to enter another salesperson's stats?"); 
}while(again && i<=100); 

var i=0; 
for (var i=0;i<NAME.length;i++) 
{ 
    printRow(); 
} 

И это заголовок:

function getName() 
{ 
    do 
    { 
     var name=prompt("What is the salesperson's full name?"); 
    }while (name==""||name==null); 
    return name; 
} 

function getSales() 
{ 
    do 
    { 
     var sales=prompt("Please enter salesperson's sales."); 
    }while(sales==""||isNaN(sales)); 
    return parseFloat(sales); 
} 

calcPay(sales) 
{ 
    var pay=sales*.1+1000; 
    return pay; 
} 

function printRow() 
{ 
    document.write("<tr>"); 
    document.write("<td>"+NAME[i]+"</td>"); 
    document.write("<td>"+SALES[i]+"</td>"); 
    var payment=calcPay(SALES[i]); 
    document.write("<td>"+payment+"</td>"); 
    document.write("</tr>"); 
} 

Это не в полной мере выполнения задания любыми средствами, я просто хочу, чтобы убедиться, что у меня есть ручка для кормления и манипуляции с массивами (чего я, очевидно, не вижу). Спасибо за любые советы.

+0

Посмотрите на консоль, какую ошибку вы получите. И не используйте 'document.write'. –

+5

'calcPay (sales)' должен быть 'function calcPay (sales)' – ThiefMaster

+2

О, мой Бог. Совершенно удивительно, как вы можете пропустить самые простые вещи. Спасибо. – unit

ответ

1

Вообще - ваш код работает, найти его здесь:

http://jsfiddle.net/osher/GhZSf/

Однако - есть недостающий "функция" перед calcPay

calcPay(sales) 
{ 
    var pay=sales*.1+1000; 
    return pay; 
} 

должен быть

function calcPay(sales) 
{ 
    var pay=sales*.1+1000; 
    return pay; 
} 

это все

+1

Благодарю вас, оцените. Чувство немного глупое, но иногда это приятно, когда это что-то маленькое (по крайней мере, это то, что я говорю своей жене). – unit

-3

имя и продажа не входят в сферу применения. Эта функция не будет делать то, что вы думаете, и это произойдет, и даже если это произойдет неправильно.
Используйте оператор if.

function getName() 
{ 
    do 
    { 
     var name=prompt("What is the salesperson's full name?"); 
    }while (name==""||name==null); 
    return name; 
} 

function getSales() 
{ 
    do 
    { 
     var sales=prompt("Please enter salesperson's sales."); 
    }while(sales==""||isNaN(sales)); 
    return parseFloat(sales); 
} 
+1

Это неправильно. В области переменных JavaScript не является их блоком, а функцией, в которой они объявлены. –

+0

Изучите код, который он зацифровывает вывод строки? –

+0

И что касается области видимости, я не ссылался на область действия. Я имел в виду область цикла.Он объявляет var внутри инструкции do –

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