Вывод новых значений к старым в текстовое поле
Как выводить раз за разом новые значения в текстовое поле, при этом, чтобы старые не стирались
function func1(){
for (i=1;i<=5;i++){
var RANKS = ranks[Math.floor(Math.random()*ranks.length)];
var SUITS = suits[Math.floor(Math.random()*suits.length)];
var blabla = RANKS + " " + SUITS;
document.getElementById("random").value = blabla;
}
}
У меня стираются старые значения и выводятся новые, а нужно, чтобы они добавлялись |
ProgYoung,
Цитата:
|
function func1(){
for(var i = 1, message = ""; i <= 5; i++) {
var RANKS = ranks[Math.floor(Math.random() * ranks.length)];
var SUITS = suits[Math.floor(Math.random() * suits.length)];
message += RANKS + " " + SUITS;
}
document.getElementById("random").value = message;
}
|
Malleys, рони,
Спасибо большое! Но если я буду в каждое текстовое поле (всего 5) выводить два рандомных значения, то чтобы мне не писать одно и то же для каждого id, я решила создать отдельную функцию, которая будет возвращать готовые рандомные элементы массивом. Правда у меня выводится undefined... Что не так работает?
var ranks = ["двойка","тройка","четверка","пятерка","шестерка", "семерка","восьмерка","девятка","десятка","валет","дама","король","туз"];
var suits = ["пик","червей","треф","бубен"];
function func(){
while(true){
try{
var RANKS = ranks[Math.floor(Math.random()*ranks.length)];
var SUITS = suits[Math.floor(Math.random()*suits.length)];
var blabla = RANKS + " " + SUITS;
return blabla;
} catch(e) {
alert("No game!");
} finally {
if (confirm("Продолжить?")) break;
else break;
}
}
}
function func1(){
document.getElementById("random1").value = func();
}
function func2(){
document.getElementById("random2").value = func();
}
function func3(){
document.getElementById("random3").value = func();
}
function func4(){
document.getElementById("random4").value = func();
}
function func5(){
document.getElementById("random5").value = func();
}
|
ProgYoung,
а где ranks и suits? |
рони,
исправил выше |
Я не понял в коде, что вы хотите... но
Цитата:
<textarea id="random1"></textarea>
<textarea id="random2"></textarea>
<textarea id="random3"></textarea>
<textarea id="random4"></textarea>
<textarea id="random5"></textarea>
<script>var ranks = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"];
var suits = "♣♦♥♠";
function func() {
for(var i = 1, message = ""; i <= 2; i++) {
var RANKS = ranks[Math.floor(Math.random() * ranks.length)];
var SUITS = suits[Math.floor(Math.random() * suits.length)];
message += RANKS + "" + SUITS;
}
return message;
}
for(var i = 1; i <= 5; i++) {
document.getElementById("random" + i).value += func();
}
</script>
|
ProgYoung,
function func(){
var blabla = [];
while(confirm("количество карт:" +blabla.length + " продолжить?")){
var RANKS = ranks[Math.floor(Math.random()*ranks.length)];
var SUITS = suits[Math.floor(Math.random()*suits.length)];
blabla.push(RANKS + " " + SUITS);
}
return blabla;
}
|
рони, Malleys,
Мне как раз нужно использовать try, catch, finally. При нажатии на кнопку в текстовых полях появляются рандомные значения карт, например, "двойка пики". Но выводит undefined.
<input type="button" value="Кликни!" onclick="func1()">
<p><input type="text" id="random1" readonly></p>
<p><input type="text" id="random2" readonly></p>
<input type="text" id="random3" readonly>
<p><input type="text" id="random4" readonly></p>
<input type="text" id="random5" readonly>
<script>
// это все возможные номиналы
var ranks = ["двойка","тройка","четверка","пятерка","шестерка",
"семерка","восьмерка","девятка","десятка","валет","дама","король","туз"];
var suits = ["пик","червей","треф","бубен"];
function func(){
while(true){
try{
var RANKS = ranks[Math.floor(Math.random()*ranks.length)];
var SUITS = suits[Math.floor(Math.random()*suits.length)];
return RANKS + " " + SUITS;
} catch(e) {
alert("No game!");
} finally {
if (confirm("Продолжить?")) break;
else break;
}
}
}
function func1(){
for(var i = 1; i <= 5; i++) {
document.getElementById("random" + i).value = func();
}
}
</script>
|
Цитата:
|
Dilettante_Pro,
аааа, спасибо большое! Все работает, как надо) |
Dilettante_Pro, рони, Malleys,
возник еще вопрос... Как теперь мне считать эти данные с текстовых полей в библиотеку, например, чтобы получилось так:
var hand = [
{ "rank":"семерка", "suit":"пик" },
{ "rank":"четверка", "suit":"червей" },
{ "rank":"двойка", "suit":"треф" },
{ "rank":"семерка", "suit":"пик" },
{ "rank":"восьмерка", "suit":"бубен" }
];
Так, как делаю я, не получается:
var hand = [];
var all1 = String(document.getElementById("random1").value);
var all2 = String(document.getElementById("random2").value);
var all3 = String(document.getElementById("random3").value);
var all4 = String(document.getElementById("random4").value);
var all5 = String(document.getElementById("random5").value);
var als1 = all1.split(" ");
var als2 = all2.split(" ");
var als3 = all3.split(" ");
var als4 = all4.split(" ");
var als5 = all5.split(" ");
hand[0].suit=als1[1];
hand[0].rank=als1[0];
hand[1].suit=als2[1];
hand[1].rank=als2[0];
hand[2].suit=als3[1];
hand[2].rank=als3[0];
hand[3].suit=als4[1];
hand[3].rank=als4[0];
hand[4].suit=als5[1];
hand[4].rank=als5[0];
alert(hand);
|
ProgYoung,
Проще сразу запоминать при генерации значений |
ProgYoung, может всё-таки использовать циклы и массивы? Вы же не хотите повторении! Например последний ваш код может выводить hand так...
var hand = [];
for(var i = 0; i < 5; i++) {
var all = String(document.getElementById("random" + (i + 1)).value);
var als = all.split(" ");
hand[i].suit = als[1];
hand[i].rank = als[0];
}
alert(hand);
|
Malleys,
не работает почему-то я сделал так:
<p><input type="button" value="Кликни!" onclick="func2()"></p>
<script type="text/javascript">
function func2(){
var hand = [];
for(var i = 0; i < 5; i++) {
var all = String(document.getElementById("random" + (i + 1)).value);
var als = all.split(" ");
hand[i].suit = als[1];
hand[i].rank = als[0];
}
document.getElementById('solve').value = hand;
}
|
Цитата:
Цитата:
Вот исправил и трансформировал ваш код из поста №9...
<input type="button" value="Кликни!" onclick="func1();">
<p><input type="text" id="random1" readonly></p>
<p><input type="text" id="random2" readonly></p>
<p><input type="text" id="random3" readonly></p>
<p><input type="text" id="random4" readonly></p>
<p><input type="text" id="random5" readonly></p>
<script>
// это все возможные номиналы
var ranks = ["двойка", "тройка", "четверка", "пятерка", "шестерка",
"семерка", "восьмерка", "девятка", "десятка", "валет", "дама", "король", "туз"
];
var suits = ["пик", "червей", "треф", "бубен"];
function func() {
var RANKS = ranks[Math.floor(Math.random() * ranks.length)];
var SUITS = suits[Math.floor(Math.random() * suits.length)];
return RANKS + " " + SUITS;
}
function func1() {
for (var i = 1; i <= 5; i++) {
document.getElementById("random" + i).value = func();
}
}
</script>
То?Цитата:
<input type="button" value="Кликни!" onclick="func1();">
<p><input type="text" id="random1" readonly></p>
<p><input type="text" id="random2" readonly></p>
<p><input type="text" id="random3" readonly></p>
<p><input type="text" id="random4" readonly></p>
<p><input type="text" id="random5" readonly></p>
<p id="solve"></p>
<script>
// это все возможные номиналы
var ranks = ["двойка", "тройка", "четверка", "пятерка", "шестерка",
"семерка", "восьмерка", "девятка", "десятка", "валет", "дама", "король", "туз"
];
var suits = ["пик", "червей", "треф", "бубен"];
function func() {
return {
rank: ranks[Math.floor(Math.random() * ranks.length)],
suit: suits[Math.floor(Math.random() * suits.length)]
};
}
var hand = [];
function func1() {
for (var i = 0; i < 5; i++) {
var card = func();
hand[i] = card;
document.getElementById("random" + (i + 1)).value = card.rank + " " + card.suit;
}
document.getElementById("solve").textContent = hand.map(function(card) { return card.rank + " " + card.suit; }).join(", ");
}
</script>
|
Malleys,
Т.к. в задании сказано использовать конструкцию try, catch,finally, то пришлось хоть что-то добавить в finally, но сейчас там return, поэтому удалил. |
Сейчас бы разобраться как в библиотеку это все добавить
|
Цитата:
|
Malleys,
спасибо большое! |
| Часовой пояс GMT +3, время: 09:41. |