2017-07-02 7 views
1

私はテーブルのデータに基づいて作成する100以上の選択/オプションボックスを持っています。どのオプションが選択されているかに基づいて色分けされたオプションがあります(「使用可能」は青、「使用不可」は赤です)。色の背景<Select>ページの負荷

ただし、ページが読み込まれると、SELECTボックスは白色のままです。私が使用する色の変更について:

<script> 
function setBg(sel) { 
    sel.style.backgroundColor = sel.options[sel.selectedIndex].style.backgroundColor; 
} 
</script> 

function display_day($day, $current_status, $list_of_statuses) 
{ 
    echo "<select name=" . $day ."[] onChange=\"setBg(this)\">"; 
    if (!$current_status) 
    { 
     echo "<option disabled selected value> -- select an option -- </option>"; 
    } 

    foreach ($list_of_statuses as $key => $row) 
    { 
     echo "<option value='" . $row['status'] . "'"; 
     echo " style = \"color: " . $row['fg_color'] . "; background-color: " . $row['bg_color'] . "\""; 

     if ($row['status'] == $current_status) 
     { 
      echo " selected=\"selected\""; 
     } 

     echo ">" . $row['status'] . "</option>"; 
    } 

    echo "</select>"; 
} 

これは明らかに、SELECTが変更されると色が変わるだけです。私はonloadを使用しようとしましたが、これはうまくいきませんでした。任意のアイデアは、データがMySQLデータベースから取得されたときにロード時に色を選択する方法を取得します。

+0

あなたは 'だけ追加し、あなたはオプションのために行ったようonload'、あなたは、単にそれを行うことができます'必要はありません。スタイル= "背景色"。 –

+0

これは唯一の方法ですか? – keelerjr12

+1

JavaScriptを使用するなどの方法がありますが、これが最良の方法です。ループの中に入れないでください。HTMLコードをエコーする代わりに、 '$ '[' status '] == $ current_status'のときにループを変数に保存し、別の変数を使用してアクティブな色を保存します。ループを作成し、色変数の色を '