2017-11-19 14 views
0

次の例では、すべてのautoで新しい行にテキストを書き込もうとしています。繰り返し。私はそれが "\ n"になると思ったが、私は成功していない。助けてもらえますか?どうもありがとうございました!! textareaStatus.value += text;テキストエリアで改行を行うには?

textareaStatus = document.body.appendChild(document.createElement('textarea')); 
 
textareaStatus.style.cssText = 'display: block; font-size:small; width: ' + 0.95 * window.innerWidth + 'px; ' + 'color: black; ' + 'background:#ffffff '; 
 
textareaStatus.rows = 5; 
 
textareaStatus.value = ''; 
 

 
    
 

 
WriteElement.onclick = function writeText() { 
 
var text = ("123" +" "+ "123" +" "+ "123" +" "+ "123" +" "+ "123" +" "+ "123" + "\n").toString();  
 
     
 
setTimeout(function(){ 
 
document.getElementById("WriteElement").click(); 
 
}, 1000);  
 
     
 
textareaStatus.value = text; 
 
} 
 
    
 
StopElement.onclick =function stopText() { 
 
clearTimeout(); 
 
} \t \t 
 

 
ClearElement.onclick = function clearText() { \t \t 
 
textareaStatus.value = ''; 
 
}
<button id="WriteElement" onclick="WriteElement()">Record</button> 
 
<button id="StopElement" onclick="StopElement()" >Stop</button> 
 
<button id="ClearElement" onclick="ClearElement()">Clear</button>

+0

あなたが追加したテキストに既存の値を連結する必要がある行を複製しようとしている場合。あなたのタイマーは毎回同じ値を設定し続けます。あなたがここで期待していることはまだあまり明確ではない – charlietfl

+0

あなたのコードにはいくつかの問題があります。私の答えは訂正と完全な解決策を見てください。 –

+0

*** @ charlietfl ***改行そのものです。この例では、数字の文字列です。しかし、私のアプリケーションでは、各行に異なる値が設定されているため、全体的に意味があります。それは送信された制御データの記録に適用される。 – JaDoLo

答えて

1

\n作業を行いますが、あなたはそうあなたの関数のそれぞれの新しいコール時にテキストエリアをクリアしていますあなたは秒を見ないデータの追加されたセット。変更:

textareaStatus.value = text; 

へ:

textareaStatus.value += text; 

すると、その問題を解決します。

また、setTimeoutタイマーへの可変参照がないため、clearTimeout()コールは決して動作しません。

そして、同じ名前の要素と機能がありますが、これは良い考えではありません。また、JavaScriptでは、識別子は通常 "camelCase"で記述されます。 「PascalCase」は、一般に「コンストラクタ関数」用に予約されています。

さらに、HTMLイベント属性(onclickなど)でイベントハンドラを設定しないでください。これは100年前のことでしたが、今日はmany reasons to never do itです。代わりに、現代の標準を使用し、JavaScriptとHTMLを分離します。

最後に、JavaScriptでテキストエリアをスタイリングする必要はありません。あなたが設定していることはすべてCSSで行うことができます。

コードが正しくなるように変更すると、\nがうまく機能することがわかります(各説明のコメントを読んでください)。

// Get the DOM references you will need just once: 
 
var btnWrite = document.getElementById("writeElement"); 
 
var btnStop = document.getElementById("stopElement"); 
 
var btnClear = document.getElementById("clearElement"); 
 

 
// Set up event handling the modern, standards-based way: 
 
btnWrite.addEventListener("click", writeData); 
 
btnStop.addEventListener("click", stopText); 
 
btnClear.addEventListener("click", clearText); 
 

 
textareaStatus = document.body.appendChild(document.createElement('textarea')); 
 

 
var timer = null; // need variable to reference timer 
 

 
function writeData() { 
 
    var text = "123 ".repeat(6) + "\n"; // Much simpler way to set up your string 
 
    timer = setTimeout(writeData, 1000); // Assign a variable to all timers so they can be accessed later 
 
    textareaStatus.value += text;  // Use += to append a new value on to an existing one 
 
} 
 
    
 
function stopText() { 
 
    clearTimeout(timer); // You must pass a reference to the timer you want cleared 
 
} \t \t 
 

 
function clearText() { \t \t 
 
    textareaStatus.value = ''; 
 
}
/* Try to do all your styling in CSS */ 
 
textarea { 
 
    display: block; 
 
    font-size:small; 
 
    width:95vw; /* vw is viewport width and the number you use is a percentage of it */ 
 
    height:5em; /* 1em === 100% of the inherited font size */ 
 
}
<button id="writeElement">Record</button> 
 
<button id="stopElement">Stop</button> 
 
<button id="clearElement">Clear</button>

+0

Scott MarcusとmeVeekayありがとう、私の問題はとても素早く正確に解決されました。 – JaDoLo

+0

@JaDoLoよろしくお願いします。コードをもっときれいにする「ベストプラクティス」アイテムをいくつか追加して、最後に答えを更新しました。 –

+0

素晴らしい!ありがとうございました – JaDoLo

1

変更textareaStatus.value = text;

textareaStatus = document.body.appendChild(document.createElement('textarea')); 
 
textareaStatus.style.cssText = 'display: block; font-size:small; width: ' + 0.95 * window.innerWidth + 'px; ' + 'color: black; ' + 'background:#ffffff '; 
 
textareaStatus.rows = 5; 
 
textareaStatus.value = ''; 
 

 

 
WriteElement.onclick = function writeText() { 
 
var text = ("123" +" "+ "123" +" "+ "123" +" "+ "123" +" "+ "123" +" "+ "123" + "\n").toString();  
 
     
 
setTimeout(function(){ 
 
document.getElementById("WriteElement").click(); 
 
}, 1000);  
 
     
 
textareaStatus.value += text; 
 
} 
 
    
 
StopElement.onclick =function stopText() { 
 
clearTimeout(); 
 
} \t \t 
 

 
ClearElement.onclick = function clearText() { \t \t 
 
textareaStatus.value = ''; 
 
}
<button id="WriteElement" onclick="WriteElement()">Record</button> 
 
<button id="StopElement" onclick="StopElement()" >Stop</button> 
 
<button id="ClearElement" onclick="ClearElement()">Clear</button>

+0

答えをありがとう、私は新しい行に全体の行を持っていきたいと思います。 – JaDoLo

+0

@JaDoLoは私の答えを更新しました...今すぐチェックしてください.. –

+0

thats gread、 "+ ="多くの感謝!!私は停止ボタンが実行されていないことを確認します。あなたはどこに問題があるのか​​見ていますか? – JaDoLo