Lemme,
Практически так, только random'ом нужно выбирать слова (через заяпятые) из поля gruz, а здесь: data.push(first + ' ' + rand(gorod) + ' ' + second); Пробовал сам, но чет функция random не работает! |
Цитата:
Цитата:
|
Lemme,
Просто поменял местами: <!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 newgen(){ var gruz = document.getElementById('gruz').innerHTML; gruz = gruz.replace(/\n/g, ',').split(','); var gorod = document.getElementById('gorod').innerHTML; gorod = gorod.split(/\n/); var avto = document.getElementById('avto').innerHTML; avto = avto.split(/\n/); function rand(item) { return item[Math.round(Math.random() * (item.length - 1))]; } var data = []; gorod.forEach(function(first) { avto.forEach(function(second) { data.push(rand(gruz) + ' ' + first + ' ' + second); }); }); // это для примера data.forEach(function(item) { document.querySelector('tbody').innerHTML += '<td>' + item + '</td>'; }); } </script> </head> <body> <textarea id="gruz"> Саня,Леха,Толик Вова,Женя,Игорь</textarea> <textarea id="gorod"> Любит Не любит</textarea> <textarea id="avto"> Олю Надю Иру Машу Дашу</textarea> <div id="rescount"></div> <br/><input type="button" onclick='newgen();' class="generate" value="СГЕНЕРИРОВАТЬ"/> <table><tbody id="result"></tbody></table> </body> </html> |
И первое поле считается как одна строка, нужно что бы как и в остальных.
Запятой поделил строки не просто так, это как бы варианты что может быть в first |
Цитата:
|
Lemme,
Вот не могу точно объяснить, смотри в первом поле как и в остальных есть строки, они просто комбинируются! но еще в первом поле строки поделены запятыми, это должны быть как варианты подстановки. Каждое поле по очереди подставляет свою строку, а в первом поле подставляется случайное слово из этой строки! |
Lemme,
Вот этот скрипт, делает то что мне необходимо! И в результате выходит нужное количество строк ( gruz(2)*gorod(2)*avto(5)=items(20) ) <!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 newgen(){ var cols=0; var or=document.getElementById('result'); var rc=document.getElementById('rescount'); var gruz = document.getElementById('gruz').innerHTML; gruz = gruz.split(/\n/); var gorod = document.getElementById('gorod').innerHTML; gorod = gorod.split(/\n/); var avto = document.getElementById('avto').innerHTML; avto = avto.split(/\n/); function rand(item) { return item[Math.round(Math.random() * (item.length - 1))]; } or.innerHTML=''; rc.innerHTML=''; var data = []; gruz.forEach(function(rndgrz) { gorod.forEach(function(first) { avto.forEach(function(second) { data.push(rndgrz + ' ' + first + ' ' + second); cols=cols+1; }); }); }); // это для примера data.forEach(function(item) { or.innerHTML += '<td>' + item + '</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='newgen();' class="generate" value="СГЕНЕРИРОВАТЬ"/> <table><tbody id="result"></tbody></table></body></html> Как видишь по результату мы получаем строки типа: Саня,Леха,Толик Любит Олю Так вот Саня,Леха,Толик нужно разделить на (в данном случае 3 слова) с помощью запятых и вставить в результат только одно случайное слово! Таких строк может быть много, так вот для каждой строки нужно одно случайное слово из этой строки, если же строка не делится запятыми, то вставляем всю строку как есть! |
<!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 newgen(){ var cols=0; var or=document.getElementById('result'); var rc=document.getElementById('rescount'); var gruz = document.getElementById('gruz').innerHTML; gruz = gruz.split(/\n/); var gorod = document.getElementById('gorod').innerHTML; gorod = gorod.split(/\n/); var avto = document.getElementById('avto').innerHTML; avto = avto.split(/\n/); function rand(item) { return item[Math.round(Math.random() * (item.length - 1))]; } or.innerHTML=''; rc.innerHTML=''; var data = []; gruz.forEach(function(rndgrz) { gorod.forEach(function(first) { avto.forEach(function(second) { var g = rndgrz.split(','); g = rand(g); data.push(g + ' ' + first + ' ' + second); cols=cols+1; }); }); }); // это для примера data.forEach(function(item) { or.innerHTML += '<td>' + item + '</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='newgen();' class="generate" value="СГЕНЕРИРОВАТЬ"/> <table><tbody id="result"></tbody></table></body></html> |
Все отлично, все как надо! Только вот еще вопрос остался:
По нажатию на клавишу сгенерировать происходит onclick='newgen();' Но вот если вписать другие значения в поля, то в результате остаются прежние! Почему не перезаписывает в переменные новые данные полей? |
Разобрался!
document.getElementById('gruz').innerHTML; В полях отлавливаем значение и сразу режем: document.getElementById('gruz').value.split(/\n/); |
Часовой пояс GMT +3, время: 21:42. |