javascript中的动态checkBox长度

时间:2011-10-03 13:19:12

标签: javascript html ajax jsp

我使用ajax以XML格式从服务器获取一些值。格式如下:

<employees><employee><id>Id</id><employeeName>Name</employeeName></employee>.....</employees>

所以要使用

处理此响应
 if(employees.childNodes.length>0){
                    for (loop = 0; loop <     employees.childNodes.length; loop++) {
                     var employee = employees.childNodes[loop];
                     var ids = employee.getElementsByTagName("id")[0].childNodes[0].nodeValue;
                     var name = employee.getElementsByTagName("employeeName")[0].childNodes[0].nodeValue;
                     s=s+'<input name=\"userAction'+type+'\" id=\"userAction'+type+'\" value=\"'+ids+'\" type=\"checkbox"\/>'+name+'<br\/>';            


                   }
                                       document.getElementById('div'+type).innerHTML=s;                        
}

我能够成功地展示不。用户的。但我的问题是,当我点击提交功能,我想知道没有的长度。的chekboxes。如你所见,我使用特定div中所有检查的相同名称。

var lennt=document.frm["userAction"+i].length;
                alert(lennt)

如果有超过1个用户,长度可以,但对于一个用户,它给了我“undefined” 请帮帮我......

1 个答案:

答案 0 :(得分:1)

您遇到的问题是,如果没有名为"userAction"+i的元素,则document.frm["userAction"+i]undefined,如果只有1,则document.frm["userAction"+i]是对一个DOM节点的引用所以没有length属性,如果有&gt; 1,document.frm["userAction"+i]是对DOMNodeList的引用,因此有一个length属性。解决方案:做一些类似的测试:

var checkboxes = document.frm["userAction"+i];
var lennt = 0; // default
if (checkboxes) { // checkboxes is not undefined
    // assign value based on whether checkboxes.length is defined
    lennt = (checkboxes.length) ? checkboxes.length : 1;
}