2011-07-10 60 views
0

我無法從dom中刪除元素。我正在使用firfox。我的代碼看起來像這樣只能添加dom元素但不能刪除它們

我有一個表單,在提交之前應該填寫所有文本框。我的形式看起來像這樣

<form name="form" method="post" action="url" onsubmit="return checkEmpty(this)" > 
<div class="field"> 
<label>field1</label><input type="text" name="f1" /> 
</div> 
<div class="field"> 
<label>field2</label><input type="text" name="f2" /> 
</div> 
.. 
.... 
...... 
input type="submit" name="Submit" value="submit" /> 
</form> 

我在這裏做的是,當一個表單提交我檢查是否有文本框爲空,如果有任何我創建了一個DOM元素H3和它添加到了DIV相應的字段,如果文本框不是空的,我檢查是否有任何文本框附加到相應的字段,如果我找到一個我刪除它。這裏是我的javascript代碼

function checkEmpty(form) { 
    var textboxes=form.elements; 
    for(var i=0;i<textboxes.length;i++) 
    { 
     if((textboxes[i].type=="text" || textboxes[i].type=="password") && textboxes[i].textLength==0)     //text box is empty,this code works in firefox but not in chrome      
     { 
     var msg=document.createElement('h3'); 
     msg.innerHTML="u cant leave this field blank"; 
     textboxes[i].parentNode.appendChild(msg); 
     return false; 
     } 
     else      //text box is not empty,this code neither works in firefox nor in chrome 
     { 
     var rem_msg=textboxes[i].parentNode.getElementsByTagName('h3'); 
     for(var j=0;j<rem_msg.length;j++) 
      textboxes[i].parentNode.removeChild(rem_msg[j]); 
     } 
    } 
} 

,直到我不刪除代碼工作正常元素,但除電元件是neccessary因爲例如用戶犯規在第一次嘗試輸入在文本框中輸入1的任何值,因此一個H3元素會但現在他在第一個文本框中輸入了一些文本,但是第二個文本框留空,所以第一個文本框的h3元素應該消失。代碼看起來很簡單,我得到一個節點的引用,然後傳入appendChildremoveChild。此外,我甚至不能夠將元素添加到谷歌瀏覽器的DOM

回答

1

如果更改創建錯誤if ((textboxes[i].type == "text" || textboxes[i].type == "password") && textboxes[i].value == "")可能行會工作

+0

如果我刪除'else'塊的代碼工作正常我的意思是即使即使所有的文本框都是空的,我點擊提交表格提交 – lovesh

+0

即時即時即可添加元素,但只在firefox.in鉻:謝謝你的工作 – lovesh

+0

@lovesh歡迎 – Sotiris

1

試試這個:

rem_msg[j].parentNode.removeChild(rem_msg[j]); 
+0

這個工作,但你能告訴我wats我的代碼錯了嗎? – lovesh

+0

它也不適用於鉻。即使所有的文本框都是空的,我點擊提交表單提交 – lovesh

+0

我可以標記2答案作爲接受bcoz你解決了我的問題的一部分,其他答案解決了下一部分。我已upvoted你的答案 – lovesh