Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2012, 20:18   #1
Rost93
Форумчанин
 
Регистрация: 05.06.2011
Сообщений: 249
По умолчанию Разложить массив

Добрый вечер, вопрос у меня достаточно странный. Дело в том что я на 200% уверен что код должен работать, но он не работает. Вот код:
PHP код:
for (var 1countOfFieldsi++) {
    var 
ves_pol = new Array();
    
ves_pol[i] = document.getElementById("ves"+i).value;
    var 
ves_pol1 0;
    
ves_pol[i] = parseInt(ves_pol[i]);
    
ves_pol1 ves_pol[i] + ves_pol1;

Значит у меня неизвестное количество поле типа текст, мне нужно сложить все значения что будут туда вводить, я написал вроде бы простой цикл, но он почему-то не работает. В переменную ves_pol1 заноситься только последние значения ves_pol[i], т.е. почему-то не складывает. Подскажите пожалуйста в чем дело.
Чтобы быть жизнеспособным, нужно приспосабливаться к любой среде. © Хохот Шамана
Rost93 вне форума Ответить с цитированием
Старый 13.03.2012, 20:34   #2
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Код:
for (var i = 1; i < countOfFields; i++) { 
    var ves_pol = new Array(); 
    ves_pol[i] = document.getElementById("ves"+i).value; 
    var ves_pol1 = 0; 
    ves_pol1[i] = parseInt(ves_pol[i]); 
    ves_pol1 = ves_pol[i] + ves_pol1; 
}
может так
Кольша вне форума Ответить с цитированием
Старый 13.03.2012, 20:59   #3
Rost93
Форумчанин
 
Регистрация: 05.06.2011
Сообщений: 249
По умолчанию

Тоже самое, заноситься только последние значение.
Чтобы быть жизнеспособным, нужно приспосабливаться к любой среде. © Хохот Шамана
Rost93 вне форума Ответить с цитированием
Старый 13.03.2012, 21:13   #4
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Цитата:
Сообщение от Rost93 Посмотреть сообщение
Добрый вечер, вопрос у меня достаточно странный. Дело в том что я на 200% уверен что код должен работать, но он не работает. Вот код:
PHP код:
for (var 1countOfFieldsi++) {
    var 
ves_pol = new Array();
    
ves_pol[i] = document.getElementById("ves"+i).value;
    var 
ves_pol1 0;
    
ves_pol[i] = parseInt(ves_pol[i]);
    
ves_pol1 ves_pol[i] + ves_pol1;

Значит у меня неизвестное количество поле типа текст, мне нужно сложить все значения что будут туда вводить, я написал вроде бы простой цикл, но он почему-то не работает. В переменную ves_pol1 заноситься только последние значения ves_pol[i], т.е. почему-то не складывает. Подскажите пожалуйста в чем дело.
Вы в каждой итерации цикла заново пересоздаете массив.
Код:
var ves_pol = [];
for (var i=countOfFields-1;i++;) {
  ves_pol.push(document.getElementById("ves"+(i-1)).value-0)
}
Нужно было что-то в этом роде?
п.с. я бы не советовал использовать конструкцию parseInt:
Код:
>>> parseInt('07');
7
>>> parseInt('08');
0
>>> parseInt('09');
0
>>> parseInt('10');
10
консоль ff10
п.п.с. в том коде для приведения к целому числу я использовал вычитание нуля из строки.
Если в тексте после цифр будут другие символы, то воспользуйтесь parseFloat:
Код:
'9'-0
9
'9a'-0
NaN
parseInt('9a')
9
parseFloat('9a')
9
parseFloat('09a')
9
parseInt('09a')
0
Alar, верни репу!

Последний раз редактировалось Naive; 13.03.2012 в 21:17.
Naive вне форума Ответить с цитированием
Старый 13.03.2012, 21:54   #5
Rost93
Форумчанин
 
Регистрация: 05.06.2011
Сообщений: 249
По умолчанию

Я в теме ошибся, мне нужно как бы сложить в значения. Т.е. в первой строке ввели 25 во второй 20, мне нужно получить 45 и занести это в переменную.
Я почитал функция push просто как бы прилепливает все значения в одну строку.
Чтобы быть жизнеспособным, нужно приспосабливаться к любой среде. © Хохот Шамана
Rost93 вне форума Ответить с цитированием
Старый 13.03.2012, 23:32   #6
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Код:
var ves_pol = 0;
for (var i=countOfFields-1;i++;) {
  ves_pol+=document.getElementById("ves"+(i+1)).value-0;
}
В одну строку сливает элементы массива функция join.
Push добавляет к массиву элемент.
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 14.03.2012, 13:16   #7
Rost93
Форумчанин
 
Регистрация: 05.06.2011
Сообщений: 249
По умолчанию

Вставил в точности ваш код, появилась какая-то ошибка скрипт весь не работал. Переделал не много
PHP код:
var ves_pol 0;
for (var 
1countOfFieldsi++) {
  
ves_pol += parseFloat(document.getElementById("ves"+i).value);

Теперь все ок, складывает. Большое спасибо!
А теперь если не трудно объясните пожалуйста чем отличается
Ваш вариант от моего.
Чтобы больше подобных ошибок не было!
Чтобы быть жизнеспособным, нужно приспосабливаться к любой среде. © Хохот Шамана
Rost93 вне форума Ответить с цитированием
Старый 14.03.2012, 13:58   #8
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Цитата:
Сообщение от Rost93 Посмотреть сообщение
Вставил в точности ваш код, появилась какая-то ошибка скрипт весь не работал. Переделал не много
PHP код:
var ves_pol 0;
for (var 
1countOfFieldsi++) {
  
ves_pol += parseFloat(document.getElementById("ves"+i).value);

Теперь все ок, складывает. Большое спасибо!
А теперь если не трудно объясните пожалуйста чем отличается
Ваш вариант от моего.
Чтобы больше подобных ошибок не было!
Знать бы еще какая именно ошибка. Я не представляю какая у вас структура документа и какие значения в полях, и вполне возможно, что я где-то опечатался, так как код не тестировал. На вскидку по поводу данных я писал выше:
Цитата:
... в том коде для приведения к целому числу я использовал вычитание нуля из строки. Если в тексте после цифр будут другие символы, то воспользуйтесь parseFloat:
Код:
'9'-0//9
'9a'-0//NaN
parseInt('9a')//9
parseFloat('9a')//9
parseFloat('09a')//9
parseInt('09a')//0
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 14.03.2012, 14:16   #9
Rost93
Форумчанин
 
Регистрация: 05.06.2011
Сообщений: 249
По умолчанию

От вас я узнал про функцию parseFloat();
Чтобы быть жизнеспособным, нужно приспосабливаться к любой среде. © Хохот Шамана
Rost93 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разложить число на цифры Dog Помощь студентам 10 09.05.2011 12:16
Разложить слово! mifka72 Помощь студентам 8 05.03.2010 14:02
Разложить секунды на чч:мм:cc Anatol_rus Общие вопросы Delphi 2 03.10.2009 12:56
Разложить строку в массив Xcopy Общие вопросы Delphi 16 17.09.2009 09:04
Разложить Сапёра Arigato Gamedev - cоздание игр: Unity, OpenGL, DirectX 4 23.11.2008 15:45