Hej,
Försöker skapa en dynamiskt selectlista där alla options ska delas in i grupper.
Resultatet behöver se ut såhär:
var selectMenu = getElemRefs("MySelectList");
var optgroup_x0 = document.createElement("optgroup");
optgroup_x0.label = "Grupper med start 6 - 2009";
var group_x0 = document.createElement("option");
group_x0.value = "3";
group_x0.appendChild(document.createTextNode("vecka 24 kl. 08.40-09.20"));
optgroup_x0.appendChild(group_x0);
var group_x1 = document.createElement("option");
group_x1.value = "4";
group_x1.appendChild(document.createTextNode("vecka 25 kl. 09.20-10.00"));
optgroup_x0.appendChild(group_x1);
if (optgroup_x0.hasChildNodes()) { selectMenu.appendChild(optgroup_x0); }
// nästa optgroup
var optgroup_x1 = document.createElement("optgroup");
optgroup_x1.label = "Grupper med start 7 - 2009";
var group_x2 = document.createElement("option");
group_x2.value = "3";
group_x2.appendChild(document.createTextNode("vecka 26 kl. 08.40-09.20"));
optgroup_x1.appendChild(group_x2);
var group_x3 = document.createElement("option");
group_x3.value = "4";
group_x3.appendChild(document.createTextNode("vecka 27 kl. 09.20-10.00"));
optgroup_x1.appendChild(group_x3);
if (optgroup_x1.hasChildNodes()) { selectMenu.appendChild(optgroup_x1); }
...
Koden ser för tillfället ut såhär:
if(!(mysql_num_rows($result) == false)){
$curr_year = 0;
$curr_month = 0;
$counter1 = 0;
$counter2 = 0;
while($res = mysql_fetch_assoc($result)){
if(!($curr_year == $res['start_year']) || !($curr_month == $res['start_month'])){
if($counter2 != 0){
echo "if (optgroup_x" . $counter1 . ".hasChildNodes()) { selectMenu.appendChild(optgroup_x" . $counter1 . "); }\n\n";
}
echo "var optgroup_x" . $counter1 . " = document.createElement(\"optgroup\");\n";
echo "optgroup_x" . $counter1 . ".label = \"Grupper med start " . $res['start_month'] . " - " . $res['start_year'] . "\";\n\n";
$counter1++;
}
echo "var group_x" . $counter2 . " = document.createElement(\"option\");\n";
echo "group_x" . $counter2 . ".value = \"" . $res['group_id'] . "\";\n";
echo "group_x" . $counter2 . ".appendChild(document.createTextNode(\"" . $res['group_name'] . "\"));\n";
echo "optgroup_x" . $counter1 . ".appendChild(group_x" . $counter2 . ");\n\n";
$counter2++;
$curr_year = $res['start_year'];
$curr_month = $res['start_month'];
}
}
mysql_free_result($result);
Problemet är att mina två räknare räknar lite fel, så att "$counter1" får för högt värde då "nuvarande" optgroup ska populeras.
Har testat att flytta $counter1 / $counter2 till olika positioner, men det står still i huvudet.
Hur bör det se ut?
Tack!