亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用Javascript刪除HTML元素?

如何使用Javascript刪除HTML元素?

守著一只汪 2019-11-13 15:19:07
我是一個新手。有人可以告訴我如何使用原始Javascript(而不是jQuery)刪除HTML元素。index.html<html><head> <script type="text/javascript" src="myscripts.js" > </script> <style> #dummy {  min-width: 200px;  min-height: 200px;  max-width: 200px;  max-height: 200px;  background-color: #fff000; } </style></head><body> <div id="dummy"></div> <form>  <input type="submit" value="Remove DUMMY" onclick="removeDummy(); "/> </form></body>myscripts.jsfunction removeDummy() { var elem = document.getElementById('dummy'); elem.parentNode.removeChild(elem);}當我單擊“提交”按鈕時,會在很短的時間內消失,然后立即出現。單擊按鈕時,我想完全刪除該元素。
查看完整描述

3 回答

?
阿晨1998

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觸發。


查看完整回答
反對 回復 2019-11-13
?
飲歌長嘯

TA貢獻1951條經驗 獲得超3個贊

您應該使用輸入type =“ button”而不是輸入type =“ submit”。


<form>

  <input type="button" value="Remove DUMMY" onclick="removeDummy(); "/>

 </form>

檢出Mozilla開發人員中心以獲取基本的html和javascript資源


查看完整回答
反對 回復 2019-11-13
?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

之所以重新出現,是因為您的提交按鈕重新加載了頁面。為防止這種行為的最簡單的方法是將添加return false到onclick像這樣:


<input type="submit" value="Remove DUMMY" onclick="removeDummy(); return false;" />


查看完整回答
反對 回復 2019-11-13
  • 3 回答
  • 0 關注
  • 725 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號