无法通过 getElementById 对 AJAXed 下拉列表进行操作
Unable to manipulate via getElementById for AJAXed dropdown lists
我正在使用它来拉取下拉列表:
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;
}
}
AJAX 调用填充 province
元素之前,您无法对它执行任何有用的操作。你必须移动这段 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的评论是在谈论国家/地区列表,但您更新的问题正在谈论省份列表,所以我不确定哪一个是您的问题;但是,我很确定潜在的问题是您在使用 AJAX 调用填充该<select>
之前设置了<select>
的值,解决方案是在使用 AJAX 调用中的 HTML 更新 DOM 后在 AJAX 回调中设置值。
如果您使用 View/Source,它通常只会在页面首次加载时显示页面的源代码,即它不会包含以后以编程方式创建的项目。如果你考虑一下,这实际上很好,因为它可以让你看到页面是如何开始的。但是,您仍然应该能够操作以编程方式创建的元素,包括从 AJAX 返回中获取的元素。话虽如此,除了视图/源之外,还有更高级的基于浏览器的调试工具。
如果要使用getElementById()
请确保服务器端代码返回相关元素的 id 属性。如果您在使其工作时遇到问题,如果您发布了一些服务器端代码,可能会对我们有所帮助。
- 如何使用jQuery选择下拉列表的值
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- Javascript按钮下拉列表
- jQuery表单添加不适用于下拉列表
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 禁用jQuery中的下拉列表
- 如何在按钮中显示下拉列表中选定的元素
- 如何在从多选下拉列表中选择选项值时动态生成文本框
- jQuery-在带有独立操作的下拉列表项末尾有图标
- 从填充了 AJAX 的下拉列表中获取控制器的操作方法中的值
- MVC 下拉列表更改事件未正确调用控制器中的操作
- 当点击下拉列表中的按钮而不关闭它时,触发AJAX操作
- 无法访问操作类(struts 2)中禁用下拉列表的选定项的值
- 通过struts2操作类(使用jtable)从数据库填充下拉列表
- 操作AJAX填充的下拉列表
- 如何从下拉列表中存储值以在其他php页面中使用而不执行操作
- JQuery取消下拉列表/在快速悬停操作时向下滑动列表
- 关于带有 OnChange 操作的下拉列表的快速 JavaScript 问题
- 无法通过 getElementById 对 AJAXed 下拉列表进行操作
- 单击链接触发操作后,下拉列表不会关闭