2017-06-09 100 views
1

我正在進行一些表單驗證,在這裏我通過for(elem in myform)循環遍歷我的表單中的元素,並根據必填字段列表檢查它並將背景顏色設置爲'粉紅色'如果必填字段沒有價值。設置style.backgroundColor關閉代碼

要將顏色重置爲默認值,我將該屬性在循環的開始處重新設置爲null。

它的工作原理完美無瑕,但出於某種奇怪的原因,它不會在循環後運行我的谷歌腳本調用。 (或者我試圖放在那裏的警報)

用了幾個小時,試圖找出註釋掉位和位的原因,並以此結束:如果我刪除顏色重置部分..谷歌腳本運行,一切正常運行除了現在已經完成的字段的顏色保持粉紅色)

if(thisEl.style.backgroundColor == "pink") 
     { 
      thisEl.style.backgroundColor = null; 
     } 

我甚至嘗試註釋掉的實際值變化,只留下if語句和它仍然無法正常工作..不知怎的,訪問該特性使得阻止我在循環之後做任何事情。

解決方法(而非解決方法):我的一些對象沒有style屬性,並試圖訪問backgroundColor引發異常,所以我測試style屬性是否先存在if(thisEl .style!= null)

+0

您是否嘗試用空字符串''「'而不是'null'重置樣式?另外,什麼循環代碼? – traktor53

+0

@ Traktor53不,我沒有,因爲就像我說過,即使我註釋掉設置樣式的行,if語句本身也會導致同樣的問題。另外就像我在我的問題中說過的,我有一個for-in循環遍歷我的表單的每個元素,然後在我調用google腳本並將表單傳遞給我的電子表格之後進行驗證 – IForgotEverything

+0

我建議創建一個最小測試這種情況下,讀者可以重現問題。您可能會發現,在代碼的開頭添加「use strict」(如果尚未存在的話)會生成更多有意義的錯誤消息。 – traktor53

回答

1

解決方案:我的一些對象沒有style屬性,並試圖訪問backgroundColor引發異常,因此測試style屬性是否先存在if(thisEl。 style!= null)解決了這個問題。

最初我不知道爲什麼會有這樣的對象,所以值得一提的是@ Traktor53指出單選按鈕組在表單元素集合中沒有樣式對象屬性時表示爲RadioNodeList。 (詳情請參閱評論)