Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 06.10.2015, 09:36
Аватар для karakym
Профессор
Отправить личное сообщение для karakym Посмотреть профиль Найти все сообщения от karakym
 
Регистрация: 21.02.2010
Сообщений: 213

Lemme,
Практически так, только random'ом нужно выбирать слова (через заяпятые) из поля gruz, а здесь:
data.push(first + ' ' + rand(gorod) + ' ' + second);
Пробовал сам, но чет функция random не работает!
Ответить с цитированием
  #12 (permalink)  
Старый 06.10.2015, 10:31
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

Цитата:
Пробовал сам
Примеры того, как пробовал.
Цитата:
функция random не работает!
в функцию rand нужно передавать массив.
Ответить с цитированием
  #13 (permalink)  
Старый 06.10.2015, 10:56
Аватар для karakym
Профессор
Отправить личное сообщение для karakym Посмотреть профиль Найти все сообщения от karakym
 
Регистрация: 21.02.2010
Сообщений: 213

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>
Ответить с цитированием
  #14 (permalink)  
Старый 06.10.2015, 11:03
Аватар для karakym
Профессор
Отправить личное сообщение для karakym Посмотреть профиль Найти все сообщения от karakym
 
Регистрация: 21.02.2010
Сообщений: 213

И первое поле считается как одна строка, нужно что бы как и в остальных.
Запятой поделил строки не просто так, это как бы варианты что может быть в first
Ответить с цитированием
  #15 (permalink)  
Старый 06.10.2015, 11:10
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

Цитата:
И первое поле считается как одна строка, нужно что бы как и в остальных.
Запятой поделил строки не просто так, это как бы варианты что может быть в first
Ты сломал мою думалку
Ответить с цитированием
  #16 (permalink)  
Старый 06.10.2015, 11:24
Аватар для karakym
Профессор
Отправить личное сообщение для karakym Посмотреть профиль Найти все сообщения от karakym
 
Регистрация: 21.02.2010
Сообщений: 213

Lemme,
Вот не могу точно объяснить, смотри в первом поле как и в остальных есть строки, они просто комбинируются!
но еще в первом поле строки поделены запятыми, это должны быть как варианты подстановки. Каждое поле по очереди подставляет свою строку, а в первом поле подставляется случайное слово из этой строки!
Ответить с цитированием
  #17 (permalink)  
Старый 06.10.2015, 11:59
Аватар для karakym
Профессор
Отправить личное сообщение для karakym Посмотреть профиль Найти все сообщения от karakym
 
Регистрация: 21.02.2010
Сообщений: 213

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 слова) с помощью запятых и вставить в результат только одно случайное слово!
Таких строк может быть много, так вот для каждой строки нужно одно случайное слово из этой строки, если же строка не делится запятыми, то вставляем всю строку как есть!

Последний раз редактировалось karakym, 06.10.2015 в 12:03.
Ответить с цитированием
  #18 (permalink)  
Старый 06.10.2015, 12:16
Аватар для sanmihan
Аспирант
Отправить личное сообщение для sanmihan Посмотреть профиль Найти все сообщения от sanmihan
 
Регистрация: 28.05.2015
Сообщений: 54

<!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>
Ответить с цитированием
  #19 (permalink)  
Старый 06.10.2015, 13:10
Аватар для karakym
Профессор
Отправить личное сообщение для karakym Посмотреть профиль Найти все сообщения от karakym
 
Регистрация: 21.02.2010
Сообщений: 213

Все отлично, все как надо! Только вот еще вопрос остался:
По нажатию на клавишу сгенерировать происходит
onclick='newgen();'

Но вот если вписать другие значения в поля, то в результате остаются прежние!
Почему не перезаписывает в переменные новые данные полей?
Ответить с цитированием
  #20 (permalink)  
Старый 06.10.2015, 13:25
Аватар для karakym
Профессор
Отправить личное сообщение для karakym Посмотреть профиль Найти все сообщения от karakym
 
Регистрация: 21.02.2010
Сообщений: 213

Разобрался!
document.getElementById('gruz').innerHTML;

В полях отлавливаем значение и сразу режем:
document.getElementById('gruz').value.split(/\n/);
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск и замена слов по списку EvgenStor Общие вопросы Javascript 40 26.09.2017 03:29
document.body.innerHTML.replace. Замена нескольких слов nule Общие вопросы Javascript 10 11.03.2015 16:14
подсчёт не слов, букв Александр х@к Элементы интерфейса 8 29.08.2011 17:22
Замена слов в тексте Dan T Общие вопросы Javascript 8 18.03.2009 12:36
добавление окошка в скрипт подсчета слов Гость Общие вопросы Javascript 10 11.03.2008 17:07