使用javascript选择下拉值等于php变量


Select dropdown value equal to php variable using javascript

我试图选择的值,下拉框称为"类型",这等于PHP变量的值称为"$Type"通过使用Javascript。我知道在JS中有一个"selectindex"函数,但"$Type"不包含数字,只包含文本。

我试着使用在这个网站上找到的循环,但这对我不起作用。

PHP:

while(list($ArtikelID, $Type) = mysql_fetch_array($result))
{
  $arid = $ArtikelID;
  $te = $Type;
}

HTML + JS:

<form name="send" method="post" action="editartticlesdef.php">
    articlenumber: </br>
    <input readonly="readonly" name="ArticleID" value=<?php echo $arid ?>></br>
    Type: </br>
    <select name="Type" id="Type">
        <option value="Article">Article</option>
        <option value="Code">Code</option>
        <option value="News">News</option>
        <option value="Project">Project</option>
    </select></br>
<script>
    window.onload = function SelectType() 
    {
        var sel = document.getElementById('Type');
        var val = document.getElementById('<?php echo $te; ?>');
        for(var i = 0, j = sel.options.length; i < j; ++i) 
        {
            if(sel.options[i].innerHTML === val) 
            {
               sel.selectedIndex = i;
               break;
            }
        }
    }
</script>
</form>

我不使用Ajax或Jquery,所以这就是为什么我试图使用循环。但由于某种原因,它不起作用。下拉菜单在加载时仍然默认选择第一个选项

你可以这样做,使用PHP。

<?php
$listArticle = array(
                'Article',
                'Code',
                'News',
                'Project'
            );
?>
<select name="Type" id="Type">
    <?php    
    foreach($listArticle as $article)
    {
        $selected = '';
        if($article == $te)
        {
            $selected = 'selected="selected"';
        }
        echo '<option '.$selected.'>'.$article.'</option>';
    }
    ?>
</select></br>

对于选择菜单,selectedIndex中引用的index是指菜单中选项项索引的整数,而不是其中包含的值。

对于javascript,尝试:

 if( sel.options[ sel.options.selectedIndex ].value === val ){
      sel.selectedIndex = i;
      break;
 } 

您根本不需要for循环,而是(基于此):

window.onload = function SelectType() 
    {
        var sel = document.getElementById('Type');
        var val = document.getElementById('<?php echo $te; ?>');
        sel.value = val;
    }

这要求在选项中显示val