将html变量分配给HTML元素......对我不起作用

时间:2013-01-11 17:38:56

标签: javascript

我有这个javascript。在我的表单中肯定有2个输入标签,名称为“附件”:

<input name="attachments" type="hidden" value="test.doc">
<input name="attachments" type="hidden" value="test2.doc">

这是我的javascript。它说我的浏览器中未定义变量附件:

var attachments = document.getElementsByName('attachments');

var picCnt = 0;
var resumeCnt = 0;

if(document.getElementsByName('attachments').length >0){
    for(var i = 0; i <= attachments.length; i++){
        if(attachments[i].value.substring(attachments[i].value.length-4, attachments[i].value.length) == ".doc" ||
        attachments[i].value.substring(attachments[i].value.length-5, attachments[i].value.length) == ".docx" ||
        attachments[i].value.substring(attachments[i].value.length-4, attachments[i].value.length) == ".pdf" ){
            resumeCnt += 1;
        }
    }
}

这是不正确的? TIA!

1 个答案:

答案 0 :(得分:3)

以下行是undefined问题:

for(var i = 0; i <= attachments.length; i++){

应该是:

for(var i = 0; i < attachments.length; i++){

报告attachments[attachments.length]最有可能是undefined,因为它始终是。{/ p>

只是一个建议

我发现上面的内容相当难以阅读,使用单数变量而不是每次重复相同的数组访问都更为理想。

var attachments = document.getElementsByName('attachments'),
    picCnt = 0;
    resumeCnt = 0;
    i, val
;

if(attachments.length >0){
    for(i = 0; i <= attachments.length; i++){
        val = attachments[i].value;
        if(val.substring(val.length-4, val.length) == ".doc" || 
           val.substring(val.length-5, val.length) == ".docx" ||
           val.substring(val.length-4, val.length) == ".pdf" ){
        resumeCnt += 1;
    }
}

}