<tr>
      <td width="32%">
  <p align="right">分类:</td>
      <td width="67%">
     <div id="sdiv" style="display:none">
        <span id="sspan"></span>
     </div>
<script language="javascript">
    //处理onchange事件的函数
    function changeValue(selectValue)
    {
        if (selectValue == "ALL")
        {
            document.getElementById('sdiv').style.display = "none";
            return;
        } 
        else
        {
            document.getElementById('sdiv').style.display = "";
            document.getElementById('sspan').innerHTML = generateSelect(selectValue);
        }
    }
    function generateSelect(inValue)
    {        if (inValue == "1")
        {  <?php
echo "<select name=\"inputtype\">";  
echo "<OPTION value=\"inputtype\" selected>请选择类型:";
$link=mysql_connect("localhost","root","101219");
mysql_query("SET CHARACTER SET gb2312");
mysql_select_db("managemanagerment",$link);
$sql="SELECT inputtype FROM inputtype where inorout =1"; $result=mysql_query($sql,$link);
$datanum = mysql_num_rows($result);
for($i=1;$i<=$datanum;$i++)
{
    $row=mysql_fetch_array($result,MYSQL_ASSOC);
echo "<option value=\"".$row['inputtype']."\">".$row['inputtype']."</option>"; 
}
    echo  "</select>"; 
mysql_close($link);
?>

        } 
else 
{      }
        
    }
 </script>
      </td>
    </tr>为什么        if (inValue == "1")
        { 
后面的PHP代码不执行呢?

解决方案 »

  1.   

    用一个字符串 输出, 不要 echo 那么多
      

  2.   

    字符串输出?楼上的我没明白你的意思。我php里的echo是为了显示一个下拉列表
      

  3.   

    首先你要确认在页面执行时候首先解析php 然后再解析js 
    所以你的代码会成为这个样子f (inValue == "1")
            {     <select name="inputtype"><OPTION value="inputtype" selected>请选择类型:<option value="你的value">你的text</option></select>
            
            } 
            else 你觉得这样的js能执行吗?
      

  4.   

    echo "<select name=\"inputtype\">";  你试下找外部的双引号改为单引号~
      

  5.   

    尝试把php内容写进js再调用
      

  6.   

    js是客户端语言, php是服务端语言。楼主你要搞清楚啊。
    如果你要用js和php通信,可以考虑用ajax
      

  7.   

    先明確一個問題:js是在客戶端執行,php在服務器執行,正常情況下js客戶端不能改變服務器php的執行
    解決方法:先將php執行了,然後以字符的形式成為js的一部分在客戶端執行.這樣在php生成內容之前js未進行解釋的,只有php解釋完了才到js.
    因為以上原因,樓主的代碼是無法執行的,可以考慮這樣:將js以字符的形式表示最後echo出來
    在書寫js的過程中加入php內容,例:
    <?php
    $javascript=<<< JAVASCRIPT
    <script language="javascript">
        //处理onchange事件的函数
        function changeValue(selectValue)
        {
            if (selectValue == "ALL")
            {
                document.getElementById('sdiv').style.display = "none";
                return;
            } 
            else
            {
                document.getElementById('sdiv').style.display = "";
                document.getElementById('sspan').innerHTML = generateSelect(selectValue);
            }
        }
        function generateSelect(inValue)
        {        if (inValue == "1")
            { 
    JAVASCRIPT;
        $javascript.="<select name=\"inputtype\">";  
        $javascript.="<OPTION value=\"inputtype\" selected>请选择类型:";
        $link=mysql_connect("localhost","root","101219");
        mysql_query("SET CHARACTER SET gb2312");
        mysql_select_db("managemanagerment",$link);
        $sql="SELECT inputtype FROM inputtype where inorout =1";    $result=mysql_query($sql,$link);
        $datanum = mysql_num_rows($result);
        for($i=1;$i<=$datanum;$i++)
        {
            $row=mysql_fetch_array($result,MYSQL_ASSOC);
            $javascript.="<option value=\"".$row['inputtype']."\">".$row['inputtype']."</option>"; 
        }
        $javascript.="</select>"; 
        mysql_close($link);
        $javascript.=<<< JAVASCRIPT
           
            } 
            else 
            {      }
            
        }
     </script>
    JAVASCRIPT;
    echo $javascript;
    ?>
    以上代碼未經測試
      

  8.   

    楼主,没有这么干的,PHP是后台运行脚本,JS是客户端的,也就是说,页面第一次载入,PHP就被执行了,而根本不是js函数generateSelect(1)被调用时才执行,你的代码,就会返回这样的结果     function generateSelect(inValue)
        {
            if (inValue == "1")
            { 
                 <select name="inputtype">
                 <OPTION value="inputtype" selected>请选择类型:</option>
                 .....
                 </select>
             }
        }
    很明显,这样js解释会是报错的,因为缺少了document.write(..)输出,所以,你应该把所有 的php返回的内容拼成一个字符串,统一用document.write输入才能显示出来,而且你这么设计,当第二次触发generateSelect(1)就又会重新document.write一次,而不会执行任何PHP脚本所以,最好的方法是通过ajax来做,用js调用服务器端 php返回的数,动态的插入到页面 当中,,这才是上道。