Показать сообщение отдельно
  #6 (permalink)  
Старый 02.10.2015, 13:46
Аватар для karakym
Профессор
Отправить личное сообщение для karakym Посмотреть профиль Найти все сообщения от karakym
 
Регистрация: 21.02.2010
Сообщений: 213

Помогите перестроить скрипт!
Ниже приведенный скрипт выполняет функцию генератора комбинаций из 3-х полей textarea
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
<style type='text/css'>
body {
  margin: auto;
}
textarea {
  height: 100px;
  width: 30%;
  margin: auto;
  border: none;
  background: #eee;
  outline: none;
}
#rescount {
  width: 8%;
  height: 100px;
  background: #eee;
  display: inline-block;
  position: fixed;
  padding: 5px;
  text-align: center;
  font-size: 3em;
}
#rescount span {
  font-size: 12px;
}
.generate {
  width: 100%;
  height: 30px;
  border: none;
  background: #eee;
  outline: none;
}
table, td {
  width: 100%;
}
td {
  background:#c2ff9b;
}
</style>
<script type='text/javascript'>
function test(){
  var cols=0; 
  var vrs=document.getElementById('gruz').value.replace(/\s+/g, 'SP').split(','); //записываю в массив слова разделяя их при этом запятой
  document.getElementById('gruz').value=vrs;
	var arr=[
		document.getElementById('gruz').value.split(/\n/),
		document.getElementById('gorod').value.split(/\n/),
		document.getElementById('avto').value.split(/\n/)
	];
	var or=document.getElementById('result');
  var rc=document.getElementById('rescount');
  or.innerHTML='';
  rc.innerHTML='';
	for (var i=0; i<arr[0].length; i++) {
		for (var j=0; j<arr[1].length; j++) {
			for (var k=0; k<arr[2].length; k++) {
          var rnd = Math.floor(Math.random() * vrs.length);
          var str=arr[0][i].replace(/^\S+/,vrs[rnd].replace('SP', ' '))+' '+arr[1][j]+' '+arr[2][k]; //пробую менять первое слово на случайное из массива который ранее создавал
          cols=cols+1;
				or.innerHTML=or.innerHTML+'<td>'+str+'</td>';
			};
		};
  }; 
  rc.innerHTML=cols;
};
</script>
</head>
<body>
<textarea id="gruz">
Саня,Леха,Толик
Яша,Серый,Ваня</textarea>
<textarea id="gorod">
Любит
Не любит</textarea>
<textarea id="avto">
Олю
Надю
Иру</textarea>
<div id="rescount"></div>
<br/><input type="button" onclick='test();' class="generate" value="СГЕНЕРИРОВАТЬ"/>
<table><tbody id="result"></tbody></table>
</body>
</html>

С помощью местных гуру и великого гугла, мне удалось переделать в первом поле textarea смысл выполнения, а именно:
Теперь значения из первого поля с помощью запятой режутся в массив после чего случайным образом подставляются в комбинации, но если добавить еще одну строку в это поле, да еще и разделить ее запятыми то получу не совсем то что нужно. Скрипт будет пихать всех под ряд и Колю и Васю и Диму...
Да бы вы меня смогли понять, скрипт берет из всех полей количество строк, а так же их значение и комбинирует их!
Пример: в первом поле 3 значения во втором 2 и в третьем тоже 3, на выходе получим 18 комбинаций из этих слов.
Сейчас скрипт переделал, что бы из первого поля строки резало еще и на слова (так сказать варианты подстановки) то есть, не всю строку, а только случайное слово из этой строки которые поделены запятыми.
Все вроде бы окей, но теперь скрипт не выполняет первоначальную функцию, а именно нарезание на строки, он убирает переносы и записывает все это дело в одну строку. Еще и с реплейсерами я там намудрил...

Последний раз редактировалось karakym, 02.10.2015 в 14:53.
Ответить с цитированием