<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代码不执行呢?
所以你的代码会成为这个样子f (inValue == "1")
{ <select name="inputtype"><OPTION value="inputtype" selected>请选择类型:<option value="你的value">你的text</option></select>
}
else 你觉得这样的js能执行吗?
如果你要用js和php通信,可以考虑用ajax
解決方法:先將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;
?>
以上代碼未經測試
{
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返回的数,动态的插入到页面 当中,,这才是上道。