输入复选框在页面加载时未被检查;但在使用“alert()”后进行检查

时间:2011-07-12 21:55:29

标签: javascript jquery ajax checkbox

我有一个包含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);

然后,上面的代码将完美运行。

但是,它不起作用。状态是“全部”,也不是 当状态为“已选中”时。

我很茫然,但我猜这个变量正在失去它 值,或事件未被触发。但是,我不确定。

任何人都有任何想法?所有评论,见解,解决方案和想法 受欢迎的。提前谢谢!

1 个答案:

答案 0 :(得分:0)

这是catch Upon page load, some of the checkboxes must appear "checked"确保在创建目标的DOM结构时运行脚本。然后它必须工作。