【发布时间】:2017-11-29 02:38:44
【问题描述】:
我有一个名为landscape.php 的php 文件。在这里,我调用另一个名为 colorList.php 的 php 文件。在这个文件中,我有 3 个按钮来选择颜色的数量:4,5 和 6。当我单击任何按钮时,我会调用一个具有 ajax 功能的 js 文件,以在 div=container 中显示正确的选择集。
Landscape.php
<table width="980">
<tr>
<td width="1000" style="vertical-align: top">
<?php include('colorList.php'); ?>
</td>
<td width="700" style="vertical-align: top">
<div id="contenido">
</div>
</td>
</tr>
</table>
code.js
function showData(dataType)
{
var capa=document.getElementById("content");
var ajax=newAjax();
ajax.open("POST", "test.php", true);
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.send("d="+dataType);
ajax.onreadystatechange=function()
{
if (ajax.readyState==4)
{
capa.innerHTML=ajax.responseText;
}
}
}
在 test.php 中,如果 dataType 为 1,则显示 4 个选择,如果为 2,则显示 5 个选择,如果为 3,则显示 6 个选择。它们都有使用 mysql 从数据库中检索到的颜色列表。我们的想法是不在任何选择器中重复任何颜色,为此,我禁用了我已经使用此脚本选择的任何颜色:
function loadColors() {
for (i = 0;i < document.test.elements.length;i++) {
for (j = 0;j < document.test.elements[i].options.length;j++) {
document.test.elements[i].options[j].disabled = false;
for (k = 0;k < document.test.elements.length;k++) {
if (i != k) {
if (document.test.elements[i].options[j].text == document.test.elements[k].options[document.test.elements[k].selectedIndex].text)
document.test.elements[i].options[j].disabled = true;
}
}
}
}
}
然后,选择器的定义如下:
<select name="color1" id="color1" onchange="loadColors()">
如果我不使用 ajax 调用,这段代码可以正常工作。也就是说,如果我在单个 php 页面中加载所有内容,例如,我将 test.php 中的内容复制并粘贴到 Landscape.php 中,一切正常。但是,一旦我使用 AJAX 加载该内容,它就不会。
我的问题不在于 javascript 也不在于 php,因为它工作正常。我的问题是,一旦我将 AJAX 添加到等式中,它就会停止工作。所以我想这是调用 loadColors() 函数的问题。我尝试将代码放在landscape.php 中,在test.php 中,调用code.js(ajax 和loadColors 函数所在的位置),将脚本加载到landscape.php 的主体中,但什么也没有……
有什么帮助吗?
【问题讨论】:
-
我在你的另一篇文章中回答了这个问题——这与你的听众在哪里联系有关。如果您将它们附加到选择本身(似乎是这种情况),它们将不会继承侦听器。相反,您可能想要研究事件委托,因此您可以让主体侦听与您的选择器匹配的元素上的任何事件。应该解决问题。
-
嗨@Snowmonkey,感谢您的宝贵时间,但您给我的解决方案不起作用。我将javascript代码添加到第一个landscape.php,然后添加到test.php,然后添加到code.js,然后添加到所有这些中,但它不起作用。我可以在每次选择中选择相同的颜色。我什至没有收到任何错误消息。请问有什么帮助吗?提前致谢。
标签: javascript php html ajax