私はまだJavaScriptにかなり慣れていないので、どこで間違いを犯しているのかわかりません。私が取り組んでいる基本的なセットアップは、一連のラジオ ボタンと一連のチェック ボックスです。選択したラジオ ボタンに応じて、特定のチェック ボックス セットのみを使用できるようにする必要があります。残りは無効にするかグレー表示にする必要があります。特定のラジオ ボタンで許可されるチェック ボックスは、php 配列を介して渡されます。私のコードでは、排他的な選択肢はラジオ ボタンを参照し、拡張された選択肢はチェック ボックスを参照します。この機能のための私の JavaScript と php は次のとおりです。
window.onload = function(){
<?php
for($i = 0; $i < count($students_information); $i++){
foreach($exclusive_extended_array as $exclusive => $extended){
echo "$('".$i."_exclusive_".$exclusive."').onclick = allow(".$i.",".json_encode($extended).");";
}
}
?>
}
function allow(i, extended){
$('[id^="'+i+'Extended"]').disabled = true;
for (var j = 0; j < extended.length; j++) {
alert(extended[j]);
$(i+"Extended"+extended[j]).disabled = false;
}
}
読み込まれたページでは、次のように表示されます。
<script type="text/javascript">
window.onload = function(){
$('0_exclusive_2176').onclick = allow(0,[1975]);
$('0_exclusive_911').onclick = allow(0,[]);
$('0_exclusive_795').onclick = allow(0,[1973,1975]);
}
function allow(i, extended){
$('[id^="'+i+'Extended"]').disabled = true;
for (var j = 0; j < extended.length; j++) {
alert(extended[j]);
$(i+"Extended"+extended[j]).disabled = false;
}
}
</script>
残念ながら、コードが最終的に行うことは、ラジオ ボタンの 1 つがチェックされたときではなく、ページが読み込まれたときにスクリプトを実行することです。要素の名前に問題があるとは思いません (ただし、命名スタイルが一貫していないことは認識していますが、それを完全に制御することはできません)。コードで単純な間違いを犯したのは私だけだと思いますが、まだそれをキャッチするのに十分なJavaScriptの経験がありません。誰かが私が間違っていることを見ていますか?
お時間をいただきありがとうございます!