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("")
не помогает убрать все запятые.
Буду благодарен за любой совет!
Спасибо!