PHP、MYSQL选择框没有正确选取

3

Got another wierd one:

Here is my php:

echo "</tr><tr>";
echo "<td style='color:white;'>".$row['iDesc']."</td><td>".$row['pCnt']."</td><td style='color:".$color.";'>".$row['pDur']."</td><td>".$row['pStr']."</td><td>".$row['pSpd']."</td><td>";
echo "<select name='wield".$row['pNum']."' id='wield".$row['pNum']."' size='1' style='width: 100px;' onChange='wieldit(".$row['pNum'].");'>";
echo "<option value=0>Use On";
$query = "Select item, iDesc from item where iType = 1";
$result2 = mysql_query($query, $_SESSION['connect']);
while ($row2 = mysql_fetch_array($result2)) {
  echo "<option";
  echo " value=".$row2['item'].">".$row2['iDesc']."</option>";
}
echo "</select></td>";
}

这是我的js代码:

function wieldit(num) {
    var id = "wield"+num;
    var e = $(id); 
    var t =  e.options[e.selectedIndex].value;
    var params = "sWield="+t;
    params += "&sNum="+num;
    new Ajax.Updater('div06', 'php/pack.php', {method: 'get', parameters: params, onComplete: showBody});
}

当我运行它时,选择框中的值为0、1、2、26、25、24、23、31。例如,我正在运行$row['pNum'] = 6,并选择选择值31。当我在js上执行params的alert时,sWield = 0且sNum = 6。问题是,sWield应该是31。有什么想法?如果我使用不同的值运行,比如$row['pNum'] = 11并选择值25,在js中sWield = 25,sNum是11,这样就应该了。有什么想法吗?

1
请展示由PHP渲染的HTML结果。 - Joe Frambach
你得到的奇怪结果是否与数据库匹配? - Scott M.
1
你的 PHP 代码生成的 HTML 输出是否正确地将值分配给了 <select> 元素?在我看来,$row['pNum'] = 6 的 value= 值没有被传递到 wieldit() 函数中。 - wzub
结果与数据库相符。我不知道如何显示生成的HTML。我正在使用Ajax,并且唯一显示呈现的HTML是我设置的标准div的首页。sWield为0是问题所在。 - S.e. Estes
好的,我可以查看渲染后的HTML,它看起来很好。我想在评论中发送它,但是它不允许我这样做,所以您可以在此链接中查看:link - S.e. Estes
无关的... 尽量不要回显任何不需要由 PHP 编译的内容。例如,将 echo "</tr><tr>"; 替换为 </tr><tr> - Matisse VerDuyn
2个回答

3

您没有关闭第一个选项

echo "<option value=0>使用中</option>";

请先关闭这个选项!


大多数浏览器都可以轻松处理这个问题(<li>也是如此),但最好还是关闭它。 - Paystey

0

你的 selectbox 中,数值31是第7个选项。 由于 Javascript 从0开始计数,因此它会显示6。

所以看起来它警报而不是选择的值。 你可以尝试这样做,并在该值周围加上引号: <option value='31'>Arms</option>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接