您的代码看起来不错。因为你的selected
在屏幕截图的正确位置输出。我试图重现这个问题,但似乎所有浏览器都工作正常。也许您可以创建一个非常简单的模板,而不需要其他代码的干扰。有时,损坏的HTML结构也可能会影响。我在一个无WP的html和我的主题中测试了它,将它放在主题的底部。您可以测试以下各项:
禁用所有插件,更改为基本主题,如2020默认主题,将代码添加到函数底部。php进行快速测试,在不同的浏览器中测试您的页面,您也可以打印您的$selected\\u分区,以确保它是您想要的,但我认为它应该是正确的,因为“selected”似乎已放置到位。以防万一您可以通过扩展禁用浏览器javascript,也可以在匿名模式下进行测试,以避免有时可能发生的扩展/插件干扰你可以把它分解成一部分,就像使用静态页面来确保它以简单的形式工作一样。然后添加php以生成,然后添加JS以控制。这样做可以帮助解决确切的问题这样可以确保主题不受插件或损坏结构的其他干扰。
我已经尝试了你的代码,除了我把有限的信息用于测试。选择框在MacOS 10.12下的Firefox、Chrome、Safari中运行良好,供您参考:
<select class="form-control" name="division">
<option value="Select">
<?php esc_html_e( \'-----Select-----\', \'donate\' ); ?>
</option>
<?php
// $selected_division = get_user_meta( $userID, \'donor_division\', true );
$selected_division = \'Barisal\';
// just keep your own variables, it is just an example because I have no idea what yours is
$divisions = array(
\'Barisal\',
\'Chattogram\',
\'Dhaka\',
\'Khulna\',
\'Rajshanhi\',
\'Rangpur\',
\'Sylhet\',
);
$options = \'\';
foreach( $divisions as $division ){
if( strtolower( $selected_division ) == strtolower( $division ) ){
$selected = \'selected="selected"\';
}else{
$selected = \'\';
}
$options .= \'<option value="\'.esc_attr( $division ).\'" \'.esc_attr( $selected ).\'>\'.esc_html( $division ).\'</option>\';
}
echo $options;
?>
</select>