Javascript.RU

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

Вызов функции из цикла
UPD. Прошу прощения, наверно я ошибся разделом. Просьба к модераторам: Если можно, перенесите тему пожалуйста.
----------------
Здравствуйте. В JS я новичок, и поэтому может быть глупый вопрос задам.

В общем столкнулся с проблемой вызова функции из цикла, приводящей к зависанию браузера.
Задача скрипта состоит в том, что бы шифровать некое слово введенное пользователем. Шифрование производится методом вставки N-количества рандомных символов между ключевыми буквами слова.

<script type="text/javascript">

    function rnd(uNum) {
		var rnd_length = set_chars.length; 
		var Arr_num = new Array(uNum);    
		Arr_num.pop();                   
		for(i = 0; i < uNum; i++) {
			var rnd_Number = Math.round(Math.random() * rnd_length);
			var j = set_chars.charAt(rnd_Number);
			Arr_num.push(j);
		}
	return Arr_num;
	}
	
var userWords_2 = window.prompt("Введите предложение для смешания букв cо сторонними символами (без пробелов):");
var userNum = window.prompt("Введите число для встаки других букв между символами:");
var set_chars = "~!@#$%^&*()_+-|\"/=№;%:?<>/ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,йцукенгшщзхъфывапролджэячсмитьбю.QWERTYUIOPASDFGHJKLZXCVBNMqqwertyuiopasdfghjklzxcvbnm";
var contakt = new Array();


for (i = 0; i < userWords_2.length; i++) {
	var e = i+1;
	var tmp_word = userWords_2.slice(i,e);
	contakt.push(tmp_word);
}

var j = rnd(userNum); // Если функция вызывается не из цикла - все хорошо...

for (i=1; i < contakt.length; i+=2) {
	contakt.splice(i,0,j); 
	// Здесь, на месте j, по идее должен находится вызов функции: rnd(userNum).
	}
	
document.write("<br /><br />" + contakt + "<br />");



P.s. Кроме этого интересна технология дальнейшего объединения
полученной строки. На данном этапе финальный результат работы скрипта (если забыть про не работающую в цикле функцию) выглядит так:

Слово: УчусьJS.
N = 2
Шифруем: У,",S,ч,B,?,у,G,н,с,_,Е,ь,g,^,J,T,у,S

К сожалению, метод
contakt.join("")

не помогает убрать все запятые.

Буду благодарен за любой совет!
Спасибо!

Последний раз редактировалось Desant, 06.02.2011 в 08:35. Причина: ошибка размещения темы
Ответить с цитированием
  #2 (permalink)  
Старый 06.02.2011, 05:26
Новичок на форуме
Отправить личное сообщение для Desant Посмотреть профиль Найти все сообщения от Desant
 
Регистрация: 05.02.2011
Сообщений: 2

В общем, разобрался в проблеме зависания браузера.
Проблема заключалась в переменной "i", которая при вызове функции из цикла получала новое значение. Поменял на "k". Все заработало.

Последний раз редактировалось Desant, 06.02.2011 в 09:03.
Ответить с цитированием
  #3 (permalink)  
Старый 06.02.2011, 06:38
Аватар для NoResponse
Профессор
Отправить личное сообщение для NoResponse Посмотреть профиль Найти все сообщения от NoResponse
 
Регистрация: 17.06.2010
Сообщений: 152

не лучший способ
вместо того что бы "гадить" переменными, лучше нормально их объявить
for (var i=1;
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов функции TicTac Общие вопросы Javascript 2 24.01.2011 23:35
Вызов функции, находящейся в другой функции ZneP Events/DOM/Window 6 24.08.2010 18:45
непонятный вызов функции hedgi Общие вопросы Javascript 2 05.08.2010 11:55
вызов функции из функции sharp_007 Общие вопросы Javascript 2 03.04.2010 21:13
Вызов функции из другой функции.. ?? glutton Общие вопросы Javascript 3 21.08.2009 22:33