3 回答

TA貢獻2037條經驗 獲得超6個贊
發生的情況是正在提交表單,因此頁面(帶有其原始內容)正在刷新。您正在click通過“提交”按鈕處理事件。
如果要刪除元素而不提交表單,請處理表單上的submit事件,然后false從處理程序中返回:
HTML:
<form onsubmit="return removeDummy(); ">
<input type="submit" value="Remove DUMMY"/>
</form>
JavaScript:
function removeDummy() {
var elem = document.getElementById('dummy');
elem.parentNode.removeChild(elem);
return false;
}
但是您根本不需要(或想要)一個表單,如果它的唯一目的是刪除虛擬div,則不需要。代替:
HTML:
<input type="button" value="Remove DUMMY" onclick="removeDummy()" />
JavaScript:
function removeDummy() {
var elem = document.getElementById('dummy');
elem.parentNode.removeChild(elem);
return false;
}
但是,設置事件處理程序的這種樣式是過時的。您似乎有很好的直覺,因為您的JavaScript代碼位于其自己的文件中,諸如此類。下一步是更進一步,避免使用onXYZ屬性來掛接事件處理程序。相反,在您的JavaScript中,您可以使用更新的方式(大約2000年)將它們連接起來:
HTML:
<input id='btnRemoveDummy' type="button" value="Remove DUMMY"/>
JavaScript:
function removeDummy() {
var elem = document.getElementById('dummy');
elem.parentNode.removeChild(elem);
return false;
}
function pageInit() {
// Hook up the "remove dummy" button
var btn = document.getElementById('btnRemoveDummy');
if (btn.addEventListener) {
// DOM2 standard
btn.addEventListener('click', removeDummy, false);
}
else if (btn.attachEvent) {
// IE (IE9 finally supports the above, though)
btn.attachEvent('onclick', removeDummy);
}
else {
// Really old or non-standard browser, try DOM0
btn.onclick = removeDummy;
}
}
...然后pageInit();從script頁面最末端的標簽body(恰好在結束</body>標簽之前)或window load事件內進行調用,盡管這種調用發生在頁面加載周期的后期,因此通常不適合掛接事件處理程序(例如,在所有圖像最終加載之后發生)。
請注意,我不得不進行一些處理以應對瀏覽器差異。您可能需要一個用于掛接事件的函數,因此您不必每次都重復該邏輯?;蛘呖紤]使用類似jQuery,Prototype,YUI,Closure或其他幾種庫的庫來為您平滑瀏覽器之間的差異。這是非常重要的了解底層的東西怎么回事,兩者在JavaScript的基本面和DOM基本面方面,但庫處理很多不一致的,同時還提供了很多方便的工具-像掛鉤事件處理程序的手段涉及瀏覽器差異。它們中的大多數還提供了一種設置功能的方式(例如pageInit),以便在DOM準備好被操縱后立即運行,而早于window load觸發。

TA貢獻1951條經驗 獲得超3個贊
您應該使用輸入type =“ button”而不是輸入type =“ submit”。
<form>
<input type="button" value="Remove DUMMY" onclick="removeDummy(); "/>
</form>
檢出Mozilla開發人員中心以獲取基本的html和javascript資源

TA貢獻1772條經驗 獲得超8個贊
之所以重新出現,是因為您的提交按鈕重新加載了頁面。為防止這種行為的最簡單的方法是將添加return false到onclick像這樣:
<input type="submit" value="Remove DUMMY" onclick="removeDummy(); return false;" />
添加回答
舉報