2017-10-14 63 views
0

通過在javascript函數中使用局部變量獲取表單元素。
我需要的是這樣的..通過在javascript函數中使用局部變量獲取表單元素

function validateTxnProperties() 
    for (i = 1; i < 37; i++) { 
     if(checkMaxLength(document.formCollection.otherDocument<%=i%>Comments)){ 
      return false; 
     } 
    } 
} 

我需要for循環替換下面的代碼。

if(checkMaxLength(document.formCollection.otherDocument1Comments)){ 
    return false; 
} 
if(checkMaxLength(document.formCollection.otherDocument2Comments)){ 
    return false; 
} 
...... 
if(checkMaxLength(document.formCollection.otherDocument36Comments)){ 
    return false; 
} 

如果我使用錯誤的術語,請更新問題。

+1

您可以使用括號記法'document.formCollection [「otherDocument」+ i +「Comments」]' –

+0

@MarkE謝謝...它的工作...請你可以解釋它的工作方式..是在jsp中保存爲另存爲陣列? – gifpif

+1

您在js代碼中使用了jsp符號。同樣在JS中,你可以通過點符號或括號表示來訪問一個對象的屬性,這並不意味着它是一個數組,而只是另一種訪問屬性的方式。這是在這種情況下去的方式,因爲你可以像字符串一樣操縱屬性名稱。如果您想了解更多關於訪問對象屬性的信息,請閱讀[Property accessors](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors) –

回答

1

@Mark E是正確的,括號表示法可能是在這種情況下去的方式,但for循環變量i需要在某個地方聲明,因此循環中的var關鍵字,最後你想把你的條件要測試的另一個功能,使循環不會在第一return false;後終止:

function condition(variable){ 
    if (checkMaxLength(document.formCollection["otherDocument" + variable + "Comments"])) { 
    return false; 
    } 
} 

for (var i = 0; i < 37; i++) { 
    condition(i); 
} 

除非你希望循環第一return false *如果是這樣的結構是這樣的後終止:

for (var i = 0; i < 37; i++) { 
    if (checkMaxLength(document.formCollection["otherDocument" + variable + "Comments"])) { 
    return false; 
    } 
} 

如果您希望我詳細說明,請不要猶豫,問。

+0

好聲明聲明'i'與'var'。雖然它沒有這樣做就可以工作,但是如果不使用聲明就可以使'i'成爲一個全局變量,這是一種不好的做法。 –

相關問題