Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.03.2015, 08:50
Новичок на форуме
Отправить личное сообщение для Cepreu Посмотреть профиль Найти все сообщения от Cepreu
 
Регистрация: 07.03.2015
Сообщений: 5

Работа с массивом. Где ошибка ?
Доброго времени суток ! Не могу сам найти ошибку. В результате работы скрипта должна выводиться сумма чисел хранящихся в массиве. Например ввожу в массив по порядку три числа 5 , 6 , 7. Надеюсь получить на выходе 18 , а получаю 0567 . Кто что подскажет ?

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Работа  с  массивом</title>
    <script src="arrays.js">
    </script>  
  </head>
  <body onload="rezultat()">
  </body>
</html>



Содержание файла arrays.js

function  rezultat() {   
 
   function  enter() {
   
     function isNumber( n ) {
       return  !isNaN(parseFloat( n )) && isFinite( n );
     }	
 
	 alert("Это  приложение  формирует  числовой  массив  введенный               
                    пользователем  и  выдает  сумму  его  элементов");
     
	 mas = [];
	 
	 do {   

         var  q = prompt("Введите  очередной  элемент  массива","");

	 if  ( isNumber( q ) ) {
             mas.push( q ); 
	 }
	   else {
         if  ( q == null ) {
           alert("Отмена  ввода");	   
		 }
         else { 		 
           if  ( q == "" ) {
             alert("Вы  ничего  не  ввели! Попытайтесь  ещё  раз.");
           } 
           else {
             alert("Вы  ввели  не  числовое  значение. Ввод  элементов  
                            массива  завершается.");
  	       }
         }		   
	   }	   
	 }  while  (  ( !isNumber( q ) && ( q == "" ) ) || ( isNumber( q ) && ( q != "" ) )  );	

     return  mas;	 

   }

   var  a, s = 0;
   
   arr = [];
   
   arr = enter();    
  
   for ( a = 0; a < ( arr.length ); a++ ) {
     s = ( s + arr[ a ] ); 

   }
   
   alert( " Сумма  элементов  введенного  массива  равна  " + s );
   
 }
Ответить с цитированием
  #2 (permalink)  
Старый 07.03.2015, 09:01
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

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

Преобразуй строку в число:
s = ( s + +arr[ a ] );


Или заюзай такую конструкцию вместо цикла:
s = eval(arr.join('+'));
Ответить с цитированием
  #3 (permalink)  
Старый 07.03.2015, 09:22
Новичок на форуме
Отправить личное сообщение для Cepreu Посмотреть профиль Найти все сообщения от Cepreu
 
Регистрация: 07.03.2015
Сообщений: 5

Это я понял. Точнее мне неясно почему я прибавляю строку, а не число ? Ведь в моём массиве хранятся числа. Откуда вместо числа берется строка ?

Последний раз редактировалось Cepreu, 07.03.2015 в 10:45.
Ответить с цитированием
  #4 (permalink)  
Старый 07.03.2015, 12:23
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Cepreu, с чего ты взял, что числа там хранятся? prompt всегда возвращает строку, следовательно в твой массив записываются строки.
Ответить с цитированием
  #5 (permalink)  
Старый 07.03.2015, 17:17
Новичок на форуме
Отправить личное сообщение для Cepreu Посмотреть профиль Найти все сообщения от Cepreu
 
Регистрация: 07.03.2015
Сообщений: 5

Спасибо , учту !
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Где ошибка window.open dedulka Общие вопросы Javascript 1 25.11.2013 18:15
Помогите найти где кроется ошибка. Kylak Ваши сайты и скрипты 9 31.03.2013 14:29
Ошибка вызова $.ajax Liv AJAX и COMET 7 17.01.2013 17:36
Узнать строку и символ, где возникла ошибка (вопрос по eval и new Function) FINoM Общие вопросы Javascript 14 22.09.2012 02:56
Карта города на сайте (где пользователь может указать себя) zebra741258963 Библиотеки/Тулкиты/Фреймворки 0 10.05.2012 03:12