2013-01-11 58 views
1

我有這個javascript。肯定是有2個輸入標籤,在我的形式命名爲「附件」:將HTML變量分配給HTML元素...不適合我

<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

這看起來錯'附件[I] .value.substring(附件[I]。價值-5,附件[I]。價值)== 「的.docx」'。你錯過了逗號嗎?你期望什麼''一些字符串' - 5'做什麼?我可能會給你'NaN'(**不是數字**)。 – Halcyon

+0

'document.getElementsByName('attachments');'看起來不錯。我認爲問題在別處。 – Halcyon

+1

你是否在domready或其下的試圖訪問的實際元素上運行該JS?這可能是你的問題......如果你在''中觸發這個腳本,而不是等待完整的dom被訪問。 – subhaze

回答

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

}

+0

這工作!我有時忘記如何計數。謝謝pebbl – Bender

+0

@Bender - 沒問題:) – Pebbl