0

Javascript で 2-D 連想配列を作成しようとしています (最初のインデックスは数値、2 番目のインデックスは連想)。私がデザインしているページには、複数のフィールドと、ユーザーが別の「更新日」を選択できるドロップダウン メニューがあり、これらのフィールドにはその更新の値が再入力されます。私はphpを使用してjavascriptコードを生成しています:

PHPコードは次のようになります(読みやすくするためにフォーマットしました):

<script type='text/javascript'>
<?php
$i = 0;
echo "var updates = new Array();";
foreach ($risk_data['updates'] as $update) {
    echo "updates[" . $i . "] = new Array();";
    foreach ($update as $key => $value) {
        echo "updates[" . $i . "]['" . $key . "'] = '" . $value . "';";
    }
    $i++;
}
?>

function update_fields() {

    var update_index = document.getElementById('select_update').selectedIndex;
    alert(update_index);
    document.getElementById('impact').innerHTML = updates[update_index]['impact'];
    document.getElementById('probability').innerHTML = updates[update_index]['probability'] + '%';
    document.getElementById('impact_effect').innerHTML = updates[update_index]['impact_effect'];
    document.getElementById('cost_impact').innerHTML = '$' + updates[update_index]['cost_impact'];
    document.getElementById('overall_impact').innerHTML = updates[update_index]['overall_impact'];
    document.getElementById('expected_cost').innerHTML = '$' + updates[update_index]['expected_cost'];
    document.getElementById('impact_discussion').innerHTML = updates[update_index]['impact_discussion'];
    document.getElementById('priority_effect').innerHTML = updates[update_index]['priority_effect'];
    document.getElementById('priority_monetary').innerHTML = updates[update_index]['priority_monetary'];
}
</script>

参考までに、ページが読み込まれると次のようになります。

<script type="text/javascript">
var updates = new Array();
updates[0] = new Array();
updates[0]['date_of_update'] = '2013-08-26';
updates[0]['impact'] = 'delay in schedule';
updates[0]['probability'] = '18';
updates[0]['impact_effect'] = '79';
updates[0]['cost_impact'] = '21000.00';
updates[0]['overall_impact'] = '14';
updates[0]['expected_cost'] = '3780.00';
updates[0]['impact_discussion'] = 'Critical path items past schedule, invoke contract penalties. You can change a very limited number of settings related to formatting. open up netbeans IDE Go to tools->options click on Editor button on top left of the options dialog box click on lot';
updates[0]['priority_effect'] = '1';
updates[0]['priority_monetary'] = '1';

function update_fields() {

var update_index = document.getElementById('select_update').selectedIndex;
alert(update_index);
document.getElementById('impact').innerHTML = updates[update_index]['impact'];
document.getElementById('probability').innerHTML = updates[update_index]['probability'] + '%';
document.getElementById('impact_effect').innerHTML = updates[update_index]['impact_effect'];
document.getElementById('cost_impact').innerHTML = '$' + updates[update_index]['cost_impact'];
document.getElementById('overall_impact').innerHTML = updates[update_index]['overall_impact'];
document.getElementById('expected_cost').innerHTML = '$' + updates[update_index]['expected_cost'];
document.getElementById('impact_discussion').innerHTML = updates[update_index]['impact_discussion'];
document.getElementById('priority_effect').innerHTML = updates[update_index]['priority_effect'];
document.getElementById('priority_monetary').innerHTML = updates[update_index]['priority_monetary'];
document.getElementById('risk_statement').innerHTML = "If " + <?php
echo $risk_data['event'] . " by " .
 $risk_data['date_of_concern'];
?> + " then "  updates[update_index]['impact'] + ".";
}
</script>

しかし、何らかの理由でスクリプトがまったく実行されません。要素の「onchange」イベントによって呼び出されるはずですが、何も起こりません。配列の宣言方法にエラーがあるかどうかはわかりません。誰かにヒントがあれば、本当に感謝します!

4

1 に答える 1