Javascript 设置style.backgroundColor关闭代码

Javascript 设置style.backgroundColor关闭代码,javascript,google-apps-script,Javascript,Google Apps Script,我正在进行一些表单验证,其中我使用for(elem in myform)循环检查表单中的元素,并对照必填字段列表进行检查,如果必填字段没有值,则将背景色设置为“粉色” 要将颜色重置为默认值,我在循环开始时将属性设置回null 它可以完美地工作,但是由于一些奇怪的原因,它在循环之后没有运行我的google脚本调用。(或者我试着放在那里的警报) 花了几个小时试图找出原因,注释了一个又一个位,结果是:如果我删除颜色重置部分。。谷歌脚本运行正常,一切正常(除了现在已经完成的字段的颜色仍为粉红色) 我甚至

我正在进行一些表单验证,其中我使用for(elem in myform)循环检查表单中的元素,并对照必填字段列表进行检查,如果必填字段没有值,则将背景色设置为“粉色”

要将颜色重置为默认值,我在循环开始时将属性设置回null

它可以完美地工作,但是由于一些奇怪的原因,它在循环之后没有运行我的google脚本调用。(或者我试着放在那里的警报)

花了几个小时试图找出原因,注释了一个又一个位,结果是:如果我删除颜色重置部分。。谷歌脚本运行正常,一切正常(除了现在已经完成的字段的颜色仍为粉红色)

我甚至试着注释掉实际值的变化,只留下if子句,但仍然不起作用。。不知何故,访问该属性会阻止我在循环之后执行任何操作


解决方案(相当于解决方法):我的一些对象没有样式属性,尝试访问该对象的背景色时引发了异常,因此我将首先使用if(thisEl.style!=null)测试样式属性是否存在解决方案:我的某些对象没有样式属性,尝试访问该对象的背景色时引发了异常,因此首先使用if(thisEl.style!=null)测试样式属性是否存在解决了问题


起初我不知道为什么会有这样的对象,所以@Traktor53指出单选按钮组在表单元素集合中表示为RadioNodeList,而表单元素集合中没有style对象属性。(有关详细信息,请参见注释)

您是否尝试过使用空字符串
而不是
null
”重置样式?还有,什么循环代码?@Traktor53没有,因为就像我说的,即使我注释掉设置样式的行,if语句本身也会导致同样的问题。正如我在问题中所说,我有一个for-in循环,循环遍历表单的每个元素,验证它,然后调用一个google脚本并将表单传递到电子表格中保存。我建议创建一个最小的测试用例,允许读者重现问题。您可能会发现在代码开头包含“use strict”(如果还没有)会产生更有意义的错误消息。@Traktor53您已经了解了一些内容。。Console确实记录了一个类型错误,并且它正在尝试读取undefined的backgroundColor..奇怪的原因是,我在循环开始时针对null测试thisEl,如果是,则跳过continue循环。。这也很奇怪,因为它实际上可以设置颜色。。我认为它从表单中得到的最后一个元素是这样做的,比如字符集定义之类的
if(thisEl.style.backgroundColor == "pink")
        {
          thisEl.style.backgroundColor = null;
        }