0

選択ボックスを切り替えるには、php を使用してロード時に js 配列を生成することにより、選択オプション値の JavaScript 配列を事前に構築する必要があります。これまでは、オブジェクトを作成して配列に追加することでこれを行ってきましたが、オブジェクトのプロパティの 1 つを年数の配列にする必要があります。私は近いです(オブジェクトのclientFormプロパティは、document.writeするとcsvリストを返します)が、lengthプロパティにアクセスできず、以前のdocument.writeが出力しないため、配列ではないと思います配列。誰かが私が間違っていることを見つけたり、別の方法を提案したりできますか?

Javascript配列を出力するphpは次のとおりです(CodeIgniterでシステムを構築しました):

echo '<script type="text/javascript">';
            $array = 'var companies = new Array();';
$i = 0;foreach($clientList as $client) :
                $array .= 'arrayItem'.$i.' = {clientNo:"'.$client->client_id.'", clientCompany:"'.$client->client_company_name.'", clientRef:"'.$client->client_ref_no.'", clientForms: Array(';
                if($client->client_forms != "")
                {

                    $a = 0; foreach($client->client_forms as $form) :
                        $array .= $form.", ";
                    ++$a; endforeach;

                }
                $array = substr($array, 0, -2); 
                $array .= ')};';
                $array .= 'companies['.$i.'] = arrayItem'.$i.'; ';
++$i; endforeach;
            echo $array;
            echo '</script>';

そして、ここに現在の出力があります:

<script type="text/javascript">
    var companies = new Array();
    arrayItem0 = {clientNo:"1", clientCompany:"Test1", clientRef:"UG123HS", clientForms: Array(1, 15)};
    companies[0] = arrayItem0;

    arrayItem1 = {clientNo:"2", clientCompany:"Test2", clientRef:"UF321HS", clientForms: Array(17)};
    companies[1] = arrayItem1;
</script>

ご覧になりたい場合は、jsfiddle で出力された完全なコードを次に示します(jsfiddle では onclicks が機能していないように見えますが、実際の Web ページでは機能します)。

ありがとう!

4

3 に答える 3

1

jsFiddleがうまく機能していないため、コードがそれほど遠くに見えないので、わかりにくいです。しかし、私は1つのことに気づきました。

あなたが持っている場所あなたlist.options[i+1]=new Option(companies[i].clientCompany, companies[i].clientRef, false, false); //Add the first option inはおそらく持っているべきですlist.options[cnt+1]=new Option(companies[i].clientCompany, companies[i].clientRef, false, false); //Add the first option in

i最初をに変更したことに注意してくださいcntiは配列をステップスルーするためのカウンターであり、cnt実際にはオプションカウンターです。実際のページですべての配列アイテムで結果が得られなかった場合は、空白のオプションを残していた可能性があります。

編集:

これは関数replaceCompanySelectにありました。

于 2012-05-17T16:25:31.350 に答える
1

配列を作成するには、次の構文を使用することをお勧めします。clientForms: [1,15]

または、追加することを忘れないでくださいnew:clientForms: new Array(1,15)

于 2012-05-17T16:12:45.990 に答える
0

答えてくれた@mashingtonと@ParthThakkarのおかげで、PHPのjson_encode()とjavascriptのJSON.parse()がどのように連携するのかわかりませんでした。これが私の新しいphpコードです:

echo '<script type="text/javascript">';
    echo "var companies = JSON.parse('".json_encode($clientList)."');";
echo '</script>';
于 2012-05-18T09:47:00.197 に答える