Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.09.2011, 11:15
Аспирант
Отправить личное сообщение для bartonom Посмотреть профиль Найти все сообщения от bartonom
 
Регистрация: 05.05.2011
Сообщений: 48

проблема с передачей параметров в функцию
<script type="text/javascript"> 

function myConcat() {
   var len = arguments.length;  // количество аргументов
   alert('len = '+ len);
   var result="" 
   for (var i = 0; i < len; i++) {
      result += arguments[i] + ","; 
   }
   return result;
} 

stroka = '"'+"red"+'"'+","+'"'+"orange"+'"'+","+'"'+"blue"+'"';
alert('stroka = '+ stroka);

 res = myConcat("red","orange","blue");  //  вариант обращения к функции
// res = myConcat(stroka);                     //  вариант обращения к функции 

alert('res = ' + res);
</script>


Здравствуйте, возникла непонятная для меня проблема с передачей параметров в функцию.
Мне необходимо собрать аргументы в строку, а затем передать в функцию.
Но при передаче в функцию списка параметров в виде myConcat("red","orange","blue") - количество аргументов len = 3,
а при передаче в виде строки myConcat(stroka) - количество аргументов len = 1.
Строка сформирована так:
stroka = '"'+"red"+'"'+","+'"'+"orange"+'"'+","+'"'+"blue"+ '"';
При отображении alert(stroka) выводит "red","orange","blue", т.е. вроде тоже самое, а результат разный.
Подскажите, пожалуйста, в чем тут дело и можно ли эту проблему решить?
Ответить с цитированием
  #2 (permalink)  
Старый 19.09.2011, 11:47
Аватар для SkyLight
Злюка-бобер
Отправить личное сообщение для SkyLight Посмотреть профиль Найти все сообщения от SkyLight
 
Регистрация: 21.03.2010
Сообщений: 438

Проблема в незнании языка. В первом случае вы передаете три аргумента, а во втором - один. Или для вас это не очевидно?
__________________
In WEB We Trust
У всех есть своя темная сторона...
Ответить с цитированием
  #3 (permalink)  
Старый 19.09.2011, 11:58
Аспирант
Отправить личное сообщение для bartonom Посмотреть профиль Найти все сообщения от bartonom
 
Регистрация: 05.05.2011
Сообщений: 48

Очевидно, конечно, что идет как один аргумент, об этом и спрашиваю: можно ли обойти эту проблему, если строка фактически содержит те же три аргумента
Ответить с цитированием
  #4 (permalink)  
Старый 19.09.2011, 12:23
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

function myConcat(){
  if( typeof arguments[ 0 ] == "string" && arguments.length == 1 )
    return ( arguments[ 0 ].match( /\w+/g ) || [] ).join( "," );
  return Array.prototype.slice.call( arguments ).join( "," );
};

alert(
  myConcat( "red", "orange", "blue" ) == myConcat( '"red", "orange", "blue"' )
);
Ответить с цитированием
  #5 (permalink)  
Старый 19.09.2011, 12:41
Аспирант
Отправить личное сообщение для bartonom Посмотреть профиль Найти все сообщения от bartonom
 
Регистрация: 05.05.2011
Сообщений: 48

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача параметров с сервера в функцию mikel Events/DOM/Window 2 29.08.2011 21:18
Проблема с передачей параметров в цикле. JonnyD3 jQuery 3 25.02.2010 16:18
Проблема с передачей параметров в IE flash_uz AJAX и COMET 4 17.04.2009 15:30
Проблема с передачей числа konstantinopol Общие вопросы Javascript 7 12.03.2009 09:52
проблема с передачей русского текста в Prototype subaru Prototype & script.aculo.us 2 26.07.2007 16:56