[英]Does javascript cache DOM elements?
我正在使用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
, form.selection
,javascript代碼中的form.inputbox
和form.selection
包含相應元素,因為它處於DOM中的最后狀態-即使它不再在DOM中。 那么,當元素從DOM中刪除時,JavaScript是否會緩存DOM而不更新元素? 這里發生了什么,更重要的是,我應該如何解決它?
不存在時,通過名稱(form.elementName)評估元素返回未定義。 評估對象的屬性值($('elementId'))返回null。 未定義和null的處理方式有所不同。
好吧,我現在可以回答我問題的第二部分:如何解決。 如果您使用的是mootools,則可以使用dollar函數(或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
}
它可以工作,但是我沒有解釋為什么其他人沒有...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.