AJAX応答の使用方法について詳しく説明する必要があります。以下は、Prototype.jsv1.7.1を使用するIE6で正常に機能します。DOMとinnerHTMLを使用して、AJAX応答で実行している可能性のあることをエミュレートしました。
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript">
document.observe('change', function(e, el) {
if (el = e.findElement('textarea')) {
alert(el.value);
}
});
function addTextarea(el){
var ta = document.createElement('textarea');
ta.name = 'ta2';
el.parentNode.insertBefore(ta, el.nextSibling);
}
function addTextarea2(){
document.getElementById('s0').innerHTML = '<textarea></textarea>';
}
</script>
<textarea name="answer8158" id="answer8158"></textarea><br>
<button onclick="addTextarea(this);">Add using DOM</button><br>
<button onclick="addTextarea2();">Add using innerHTML</button><span id="s0"></span>
プログラムで値を変更し、変更イベントが発生することを期待している場合、それはまったく異なります。ところで、私はオブザーバーを次のように書きます:
document.observe('change', function(e) {
var el = e.findElement('textarea');
if (el) {
alert(el.value);
}
});
これはほんの数文字の余分な文字であり、はるかに明確です。