遅く、私のjavascriptとjqueryのスキルアップをしています。私は.val( '')でテキストエリアをリセットしようとしていましたが、リセットした後に追加できませんでした。テキストエリアを追加するのがなぜ.textでしかなく、.valではなく動作するのはなぜですか?
var console = $('#console');
function Initialize(data){
console.text(data);
};
function AddText(data){
console.append(data);
};
function clearConsole(){
console.val('');
};
は今、私はその後、私はむしろ、私は唯一の値を設定することができ、全く追加することはできませんconsole.val(data)
からconsole.text(data)
を変更した場合。今、私はまた、このような.value()
などのテキストエリアからテキストを取得するより多くの方法が、ありますけど、私が代わりに.val('')
の.text('')
を使用して作業私のコードを得たので、私は多くのことを周りに混乱していないが、私はに走りましたちょうど示し代わりの説明アウト入力が容易になり、いくつかの本当に奇妙な行動:
var ta, tb, tc;
$(document).ready(function() {
ta = $('#ta');
tb = $('#tb');
tc = $('#tc');
});
//first textarea
function AddText() {
if (ta.text()) {
ta.append(Math.random() + "\n");
} else {
ta.text(Math.random() + "\n");
}
};
function ClearText() {
ta.text('');
}
//second textarea
function AddVal() {
tb.append(Math.random() + "\n");
};
function ClearVal() {
tb.val('');
}
//third textarea
function AddVal2() {
if (tc.val()) {
tc.append(Math.random() + "\n");
alert('Append is being called, but not appending.');
} else {
tc.val(Math.random() + "\n");
}
};
function ClearVal2() {
tc.val('');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<p> Using .text to initialize the textarea allows .append and clearing</p>
<textarea readonly cols=50 rows=5 placeholder="First textarea : A" id="ta"></textarea>
<br>
<button type="button" id="AddText" onclick="AddText()">Add Text</button>
<button type="button" id="ClearText" onclick="ClearText()">Clear</button>
<br>
<p>Using .val to initialize the textarea does not allow .append after clearing</p>
<textarea readonly cols=50 rows=5 placeholder="Second textarea : B" id="tb"></textarea>
<br>
<button type="button" id="AddVal" onclick="AddVal()">Add Text</button>
<button type="button" id="ClearVal" onclick="ClearVal()">Clear</button>
<br>
<p>Using .val to initialize the textarea with the extra checks doesn't append at all.
<br>An alert is generated to show the append is called, but no appending occurs.</p>
<textarea readonly cols=50 rows=5 placeholder="Third textarea : C" id="tc"></textarea>
<br>
<button type="button" id="AddVal2" onclick="AddVal2()">Add Text</button>
<button type="button" id="ClearVal2" onclick="ClearVal2()">Clear</button>
は、誰かが私には、この動作し、使用することがベストプラクティスを説明できますか?それとも、まったく同じですか、好みにしていますか?ありがとう。
EDIT:Bonus jfiddle
私は私の答えでこれを言及すべきであり、奇妙な振る舞いを引き起こして横行した。 – dlsso
私はあなたの答えを受け入れるつもりです。なぜなら、1)なぜ '.append'が適切でないのか説明しました。2)壊れた例を動作させる解決策を提供してください。 レコードについては、2番目と3番目のコード例を動作させるために、 'tb.val()+ Math.random()+" \ n ");ありがとうございました:) –