我正在使用mootools在我的一个表单中切换两个DOM元素的显示(和存在)。然后,我使用javascript来验证表单,以确保填写所有必填字段。问题是浏览器似乎缓存元素。例如,我有这样的HTML:
<input name="inputbox" id="inputbox" type="text" />
<select name="selection" id="selection">...</select>
用于验证的javascript是这样的:
if (form.inputbox != null && form.inputbox.value == "") {
//don't submit form
{
else if (form.selection != null && form.selection.value == 0) {
//don't submit form
}
现在,首次加载页面并删除input
元素时,此工作正常。但是,当我单击用input
元素替换select
元素的按钮时,从form.inputbox
开始,javascript代码中的form.selection
包含相应的元素,因为它处于DOM的最后状态 - 即使它不再存在于DOM中。那么javascript是否缓存DOM而不是在从DOM中删除元素时更新元素?这里发生了什么,更重要的是,我该如何解决它呢?
答案 0 :(得分:3)
当不存在时,按名称(form.elementName)评估元素返回undefined。评估对象的属性值($('elementId'))将返回null。未定义和null的处理方式不同。
答案 1 :(得分:1)
好吧,我现在可以回答我问题的第二部分:如何解决它。如果您使用的是mootools,那么使用美元函数(或getElementById可能有效)而不是使用form.selection
和form.inputbox
:
if ($("inputbox") != null && $("inputbox").value == "") {
//don't submit form
{
else if ($("selection") != null && $("selection").value == 0) {
//don't submit form
}
它有效,但我没有解释为什么对方没有......