2013-08-17 44 views
0

我已成功完成表單的驗證功能,當它捕獲到錯誤時我想在所有表單元素上單擊時刪除紅色邊框他們。我知道如何用onFocus調用函數,但問題是我不知道如何定位元素而不是元素的值。這是我有一個錯誤的函數:如何在onFocus時更改所有表單元素的樣式

function clearFormErrors(x) { 
     var element = document.forms[x].elements; 
     for(i = 0; i = element.length; i++) { 
      element[i].style.borderColor = "#000"; 
     } 
    } 

如何確定目標輸入字段,而不是裏面的價值邊界變成黑色?

+0

測試節點類型。 http://stackoverflow.com/questions/185034/testing-the-type-of-a-dom-element-in-javascript – RobM

+0

檢查你的循環。特別是,「i = element.length」應該很可能是:「i

+0

是的,喬說的很可能會解釋一個錯誤。 – user1167442

回答

1

如上所述,你的循環應該是<。

但是,如果您只想定位「輸入」,則還應該檢查nodeName。

function clearFormErrors(x) { 
     var element = document.forms[x].elements; 
     for(i = 0; i < element.length; i++) { 
      if (element[i].nodeName.toLowerCase() == "input") { 
       element[i].style.borderColor = "#000"; 
      } 
     } 
    } 
+1

這種情況下,一些正確書面文檔類型失敗。你應該使用'element [i] .nodeName.toLowerCase()==「input」' – avall

+0

謝謝你搶,但我得到它的工作,我想如何,謝謝你的幫助。 –

+1

我還會爲循環索引聲明一個變量,例如'for(var i = 0 ...',以避免污染全局範圍或與函數中的其他循環發生衝突 –

相關問題