我有一个IF语句来检查ForEach循环中的特定字符串,如果存在,则将“selected”添加到<option>
输出,以便首先在HTML选择框中显示该条目。但是,当循环到达正确的记录时,它会在每个后续<option>
记录中添加“已选择”。
function adminFillOption($options, $input) {
$output = "";
$selected = "";
//iterate through the array
foreach ($options as $value => $desc) {
if ($input == $desc) {
$selected = 'selected';
};
//Add an option for each elemement of the array to the output
$desc = htmlspecialchars($desc);
$output .= "\t\t\t\t\t\t<option value='$desc' $selected >$desc</option>\n";
}//end interation
return $output;
}
非常感谢任何帮助。
答案 0 :(得分:0)
function adminFillOption($options, $input) {
$output = "";
foreach ($options as $value => $desc) {
//Add an option for each elemement of the array to the output
$desc = htmlspecialchars($desc);
$output .= "\t\t\t\t\t\t<option value='$desc'";
if ($input == $desc) $output .= ' selected';
$output .= ">$desc</option>\n";
}//end interation
return $output;
}
答案 1 :(得分:0)
你从未取消它,所以它为每次迭代设置。
尝试使用三元运算符,在条件未满足时将其设置为空。
$selected = ($input == $desc) ? 'selected' : '';
或者在$selected
之前,在循环中声明if
,这两种方法都可以。
所以代码会变成:
function adminFillOption($options, $input) {
$output = "";
//iterate through the array
foreach ($options as $value => $desc) {
$selected = ($input == $desc) ? 'selected' : '';
//Add an option for each elemement of the array to the output
$desc = htmlspecialchars($desc);
$output .= "\t\t\t\t\t\t<option value='$desc' $selected >$desc</option>\n";
}//end interation
return $output;
}
答案 2 :(得分:0)
因为,您只为$selected
分配一次值(当它被选中时)。
在达到所选的一个之后,变量不会被修改。
更改
if ($input == $desc) {
$selected = 'selected';
};
要:
if ($input == $desc) {
$selected = 'selected';
}
else {
$selected = '';
}
或者甚至以下选项更好:
$selected = '';
if ($input == $desc) {
$selected = 'selected';
}
三元运营商:
$selected = ($input == $desc) ? 'selected' : '';
答案 3 :(得分:0)
$rootScope.$on('dropDownsSet', function(event, mass) {}
如果这样做,function adminFillOption($options, $input) {
$output = "";
// $selected = ""; -----> not here
//iterate through the array
foreach ($options as $value => $desc) {
$selected = ""; // ----> but here
if ($input == $desc) {
$selected = 'selected';
};
//Add an option for each elemement of the array to the output
$desc = htmlspecialchars($desc);
$output .= "\t\t\t\t\t\t<option value='$desc' $selected >$desc</option>\n";
}//end interation
return $output;
}
将始终通过每次迭代重置