チェックボックスを監視するためにプロトタイプを使用しているので、JavaScriptチェックを追加できます。チェックボックスが配置されているtrまたはtdをクリックすると、チェックボックスがオンになります。
チェックボックスを直接クリックすると、onchangeイベントが発生するため、アラートが表示されます。チェックボックスの値がjavascriptによって変更された場合(trまたはtdをクリックした場合)、onchangeは実行されません。チェックボックスが間接的に変更されたときにonchangeが起動されないのはなぜですか?
これは私が使用しているJavaScriptです。
Element.observe(window, 'load', function() {
/* If a tr or td is clicked, change the value of the checkbox. */
$$('#results tr').each(function(el) {
el.observe('click', function(e) {
if(!e.target) { e.target = e.srcElement; }
if(e.target.nodeName == 'TD' || e.target.nodeName == 'TR') {
$('compare-product'+this.id).checked = ($('compare-product'+this.id).checked === false) ? true : false;
}
});
});
/* Monitor if the status of a checkbox has changed. */
$$('#results tr td input').each(function(el) {
el.observe('change', function(e) {
alert('!');
}
);
}
);
}
);
FirefoxとIE7でテストしましたが、どちらも機能していません。私は回避策を探していません。なぜこれが機能しないのか知りたいだけです。