1

私はこの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;
        }
    }
}

これは間違っていますか?ティア!

4

1 に答える 1

3

次の行がundefined問題です。

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

そのはず:

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

attachments[attachments.length]報告はである可能性が最も高いundefinedです。常にそうなるからです。

ただの提案

上記はかなり読みにくいことがわかりました。毎回同じ配列アクセスを繰り返すよりも、単一の変数を使用する方がはるかに最適です。

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;
    }
}

}

于 2013-01-11T17:49:57.883 に答える