プロが教えるわが家の防犯対策術!

JavaScriptの勉強をしているのですが、行き詰まっているので知恵をお貸し下さい。

<TEXTAREA NAME="out" ROWS=30 COLS=30></TEXTAREA>
で作成したテキストエリアに、数字を順に表示させたいと思っています

0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
10,11,.......
20,...

この様な出力をしたいのです。
C言語ですと
for(i=0;i=<30;i++){
printf("%d,",i)
count++;
if(count%=10)printf("\n")
}
この様な感じで出力できると思うのですが、
JavaScriptでの出力はdocument.form.out.value = iしか知りません。
コレですと、最後の1つしか表示されない(順に表示されているのだと思いますが早すぎて見えてない)状態です。

テキストエリアに、新規で出力するのではなく、追加で出力する方法はありませんか?

よろしくお願いします。

A 回答 (3件)

こんなことでしょうか? (おまけで、順番に表示するものも追加)



<html>
<head>
<script type="text/javascript">
function test1() {
var e = document.forms[0].out;
e.value = '';
for (i=0; i<=30; i++) e.value += (i?',':'') + i;
}

function test2(s) {
if (s == 'start') { this.count = 0; clearTimeout(this.tm); }
document.forms[0].out.value = this.count++;
if (this.count<=30) this.tm = setTimeout(test2,500);
}
</script>
</head>

<body>
<form>
<textarea name="out" rows=30 cols=30></textarea>
<p>
<button type="button" onclick="test1()">まとめて表示</button>
<button type="button" onclick="test2('start')">順番に表示</button>
</form>
</body>
</html>
    • good
    • 0

たいこうして。

(って、だれに?)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>TEST</title>
<body>

<form name="abc" action="#">
 <p><textarea cols="40" rows="4" name="" id="xyz"></textarea></p>
 <p><textarea cols="40" rows="4" name="" id="uvw"></textarea></p>
</form>

<script type="text/javascript"><!--

var Counter = function ( n ) {
 var cnt = n || 0;
 return function () {
  return cnt++;
 };
};

var Checker = function ( max ) {
 return function ( n ) {
  return max < n;
 }
};

var Display = function ( e, f, c ) {
 return function ( ) {
  var tmp = c.call();
  e.value += tmp +',';
  return f(tmp);
 };
};

var Timer = function ( func, interval ) {
 return function ( ) {
  var f = func.apply( this, arguments );
  f || setTimeout( arguments.callee, interval );
 };
};

Timer(Display( document.forms['abc'].elements['xyz'], Checker(20), Counter( 0 ) ), 100)();
Timer(Display( document.forms['abc'].elements['uvw'], Checker(120), Counter( 100 ) ), 200)();

</script>
</body>
</html>
    • good
    • 0

方法はいっぱいありますけど、


基本的にC言語と同じようなロジックで考えられます。
document.form.out.valueを使いたかったら
for(i=0;i=<30;i++){
 document.form.out.value += i;
}
ですよ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!