我是新手,我有应用程序,其中存在复选框树。我想在检查其中一些复选框之前预先填充复选框的if。
为了从我的后端perl脚本获取XML格式,如下所示。在下面的XML中只有0,43,44,45,46和50来,所以只有那些相应的复选框需要在页面加载时检查。我想在页面加载时显示那些已检查的复选框。我该怎么做.......?
我尝试了很多例子。但我没有得到我的问题的解决方案.Below是我的XML格式数据,它来自perl脚本。
<perldata>
<hashref memory_address="0x86f4880">
<item key="0">1</item>
</hashref>
</perldata>
<perldata>
<hashref memory_address="0x86f4880">
<item key="43">1</item>
</hashref>
</perldata>
<perldata>
<hashref memory_address="0x86f4880">
<item key="44">1</item>
</hashref>
</perldata>
<perldata>
<hashref memory_address="0x86f4880">
<item key="45">1</item>
</hashref>
</perldata>
<perldata>
<hashref memory_address="0x86f4880">
<item key="46">1</item>
</hashref>
</perldata>
<perldata>
<hashref memory_address="0x86f4880">
<item key="50">1</item>
</hashref>
</perldata>
答案 0 :(得分:0)
缺少很多信息,但我会尽力帮助你。我会假设您正在获取整个XML并且您没有使用jQuery或其他库。首先,您的XML缺少根节点。然后,您可以使用JavaScript解析XML并检查框,以便:
// if you are getting the XML from AJAX call
//var xmlDoc = xmlhttp.responseXML;
// if you are have the XML as String
var xmlStr = '<root><perldata> \
<hashref memory_address="0x86f4880"> \
<item key="0">1</item> \
</hashref> \
</perldata> \
<perldata> \
<hashref memory_address="0x86f4880"> \
<item key="43">1</item> \
</hashref> \
</perldata> \
<perldata> \
<hashref memory_address="0x86f4880"> \
<item key="44">1</item> \
</hashref> \
</perldata> \
<perldata> \
<hashref memory_address="0x86f4880"> \
<item key="45">1</item> \
</hashref> \
</perldata> \
<perldata> \
<hashref memory_address="0x86f4880"> \
<item key="46">1</item> \
</hashref> \
</perldata> \
<perldata> \
<hashref memory_address="0x86f4880"> \
<item key="50">1</item> \
</hashref> \
</perldata> \
</root>';
var xmlDoc;
if (window.DOMParser)
{
var parser=new DOMParser();
xmlDoc=parser.parseFromString(xmlStr,"text/xml");
}else // Internet Explorer
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.loadXML(xmlStr);
}
// get all the item tags from the XML
var itemTags = xmlDoc.getElementsByTagName("item");
// get all the items to be checked
var inputsToCheck = {};
for(var i = 0, len = itemTags.length; i < len; i++) {
var itemTag = itemTags[i];
inputsToCheck[itemTag.getAttribute("key")] = true;
}
// loop through the inputs and check the items to be checked
var inputs = document.getElementsByTagName("input");
for(var i = 0, len = inputs.length; i < len; i++) {
var input = inputs[i];
if(input.getAttribute("type") == "checkbox" && inputsToCheck[input.getAttribute("name")])
input.setAttribute("checked", "true");
}