我有一个包含5个项目列表的表,这些项目是使用带有PHP / MySQL后端的AJAX动态生成的。每个项目旁边都有一个INPUT复选框。
页面加载时,某些复选框必须显示为“已选中”,具体取决于PHP / MySQL返回的一组值。因此:
var checked_items = [];
// var checked_items = new Array(); // this is not working either
var GetItemsFromXML;
var SplitItems;
var XMLItemsObj = new Object;
// function...
function DisplayItems() {
CreateRObj(function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
GetItemsFromXML=xmlhttp.responseText; // returns pike delim list
SplitItems = GetItemsFromXML.split("|"); // split at pike
// status - either "all" or "selected"
XMLItemsObj.checkedstatus = SplitItems[0];
// drop last ","
SplitItems[1] = SplitItems[1].substr(0,SplitItems[1].lastIndexOf(","));
// split at comma and pass to variable
checked_items = SplitItems[1].split(",");
}
});
xmlhttp.open("POST","loaditems.php",true);
xmlhttp.send();
}
此时,变量“checked_items”包含PHP / MySQL返回的值。 这些值将决定选中哪个复选框。
我已经确认通过测试填充此变量以查看它是否为空(“”), undefined,或null。
现在,一旦页面加载,下面的代码将遍历所有复选框并根据“XMLItemsObj.checkedstatus”状态将其关闭。如果状态为“已选中”,则仅检查一些状态。如果状态为“全部”,则应该检查所有复选框。
这是执行此操作的代码:
if (XMLItemsObj.checkedstatus=="selected") {
for (i=0; i < checked_items.length; i++) {
$(":checkbox[value="+checked_items[i]+"]").attr("checked",true);
}
} else if (XMLItemsObj.checkedstatus=="all") {
$("input:checkbox").each(function() {
$("input:checkbox").attr("checked",true);
});
}
这里的事情开始变得奇怪......
以上似乎只在我使用“警报”功能时才有效 检查“checked_items”变量中的值。有用 当“.checkedstatus”是“全部”或“被选中”时。
因此,如果我要使用,例如这段代码:
alert("The values of the checked_items variable are: "+checked_items);
然后,上面的代码将完美运行。
但是,它不起作用。状态是“全部”,也不是 当状态为“已选中”时。
我很茫然,但我猜这个变量正在失去它 值,或事件未被触发。但是,我不确定。
任何人都有任何想法?所有评论,见解,解决方案和想法 受欢迎的。提前谢谢!
答案 0 :(得分:0)
这是catch Upon page load, some of the checkboxes must appear "checked"
确保在创建目标的DOM结构时运行脚本。然后它必须工作。