簡體   English   中英

JavaScript是否緩存DOM元素?

[英]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.inputboxform.selection ,javascript代碼中的form.inputboxform.selection包含相應元素,因為它處於DOM中的最后狀態-即使它不再在DOM中。 那么,當元素從DOM中刪除時,JavaScript是否會緩存DOM而不更新元素? 這里發生了什么,更重要的是,我應該如何解決它?

編輯:我正在使用mootools進行元素的刪除和替換,可以在此處此處找到有關各個功能的文檔。

不存在時,通過名稱(form.elementName)評估元素返回未定義。 評估對象的屬性值($('elementId'))返回null。 未定義和null的處理方式有所不同。

好吧,我現在可以回答我問題的第二部分:如何解決。 如果您使用的是mootools,則可以使用dollar函數(或getElementById可能起作用),而不要使用form.selectionform.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM