我用它来拉下拉列表:
function showRecords(str,column,nextDiv) {
if (str== null) {
document.getElementById(nextDiv).innerHTML="----------------------------------------";
return;
}
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
var xmlhttp=new XMLHttpRequest();
} else {
// code for IE6, IE5
var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById(nextDiv).innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getRecords.php?"+column+"="+str,true);
xmlhttp.send();
}
页面加载正常,但是,当您查看源信息时,没有来自 AJAX 的任何内容,因此我无法通过 getElementById
操作下拉列表的任何值,是这样吗正常吗?
澄清
实际的 ID 本身位于主页上,但所有选项都是从另一个页面导入的。我无法特别使用此代码:
<?php echo "document.getElementById('province').value =\"Abim\";";?>
因为这些国家在这个页面上不存在,所以它们是导入的值,不仅如此,页面上唯一的就是这个...
<option value = >--------------------</option>
<option value="Abim">Abim</option>
<option value="Adjumani">Adjumani</option>
<option value="Amolatar">Amolatar</option>
<option value="Amuria">Amuria</option>
... etc
这里全部插入
<select name =province class=dropdown id=province></select>
凭借 id。
<小时/>解决方案
通过 AJAX 函数传递另一个变量:oldVal ($_REQUESTed Value)
...
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById(nextDiv).innerHTML = xmlhttp.responseText;
---------> document.getElementById(nextDiv).value = oldVal;
}
}
最佳答案
您无法使用province
做任何有用的事情。元素,直到它被 AJAX 调用填充。您必须移动这段 JavaScript:
document.getElementById('country').value = "Uganda";
进入 AJAX 回调:
xmlhttp.onreadystatechange = function() {
if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById(nextDiv).innerHTML = xmlhttp.responseText;
document.getElementById('country').value = "Uganda";
}
};
或者类似的东西。您对 nnnnnn 的评论是关于国家/地区列表,但您更新的问题是关于省份列表,所以我不确定哪一个是您的问题;但是,我很确定根本的问题是您正在设置 <select>
的值在您填充 <select>
之前使用 AJAX 调用,解决方案是在使用 AJAX 调用中的 HTML 更新 DOM 后在 AJAX 回调中设置值。
关于php - 无法通过 getElementById 操作 AJAX 下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5945072/