2016-09-26 68 views
-2

我想通過JavaScript驗證一些代碼。我遇到的戲是我收到無法設置未定義的邊框 - JS

"Uncaught TypeError: Cannot set property 'border' of undefined".

我是新來的JavaScript,並試圖讓爲什麼出現這種情況有充分的認識,以及如何防止這種情況在未來的編碼的項目。我的目標是如果驗證失敗,它會將文本框邊框改爲紅色。

function validation_Step1(event) { 
    var Firstbox = document.getElementsByName("Firstbox"); 

    if (Firstbox.value == null || Firstbox.value == '') { 
     document.getElementsByName("Firstbox") 
      .style.border = "2px solid red"; 
     alert("Error"); 
     return false; 
    } else { 
     return true; 
    } 
} 
+6

getElementsByName不返回單個元素,而是一個NodeList - 因此您必須單獨訪問其中的元素,例如使用索引表示法。 – CBroe

+0

['getElementsByName'](https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByName)返回一個節點列表集合... – Rayon

+0

是否有任何元素的屬性名稱爲'Firstbox' ? –

回答

1

這是因爲document.getElementsByName("Firstbox")返回NodeList它可以被看作是一個「種」陣列。

你應該做document.getElementsByName("Firstbox")[0]如果你要處理的第一個元素只

+0

_「返回一個數組」_?不,它不是'array' – Rayon

+0

它返回的對象與數組有很多共同之處,但它絕對不是一個。 – Quentin

+0

好的,這是一個NodeList,但對於一個初學者來說,它們之間的差異並不真正有意義。無論如何,我會改變我的答案,以更具體。 – Molochdaa

-2

要查找元素使用ID:

<input type="text" id="login"> 

然後得到的元素:

var elem = document.getElementById('login'); 

而且運行JS腳本當整個HTML被加載時,使用JS中的onload事件。

相關問題