2014-06-06 70 views
0

所以我想在純JavaScript中做一個基本的類似CRUD的應用程序,所以沒有jQuery的答案,請。只.remove()的作品,而不是removeChildren()

擁有一個數據庫,一切都會晚,我是一個新手,所以我用它作爲學習工具。

事情是:我試圖在輸入和兩個按鈕結束新行。一個用於刪除自己的行,另一個用於「保存」寫入輸入的文本。

的問題是,當我使用this.parentNode.parentNode.remove();是作品,但因爲這是一個相當新的,尚未完全支持,特別是IE我想用removeChild方法,但我無法得到它的權利。有人能幫助我嗎?

在此先感謝。

這裏是腳本代碼,所以你可以看到,如果有什麼不對(刪除功能是在結尾):

var $ = function (elem) { 
    return document.getElementById(elem); 
} 
var _ = function (elem) { 
    return document.getElementsByClassName(elem); 
} 

$("btnAdd").addEventListener("click", Add, true); 

function Add() { 
var saveElements = _("btnSave"); 
var deleteElements = _("btnDelete"); 

nodeElement = document.createElement("tr"); 
nodeElement.innerHTML = "<td><input type='text'/></td>"+ 
         "<td><input type='text'/></td>"+ 
         "<td><input type='text'/></td>"+ 
         "<td><button class='btnSave btn blue'>S</button><button class='btnDelete btn red'>D</button></td>"; 
    $("newElement").appendChild(nodeElement); 

    for (var i = 0; i < saveElements.length; i++) { 
     saveElements[i].addEventListener("click", Save, true); 
    } 

    for (var i = 0; i < deleteElements.length; i++) { 
     deleteElements[i].addEventListener("click", Delete, true); 
    } 
} 
function Save() { } 

function Delete() { 
    this.parentNode.parentNode.remove(); 
} 
+0

你能告訴孩子,你試圖使用[removeChild之(HTTPS://developer.mozilla .ORG/EN-US /文檔/網絡/ API/Node.removeChild)?這可能只是一個簡單的錯誤或錯字。 –

+0

關於最後一個函數:'function Delete(){ this.parentNode.parentNode.remove(); }' 但它似乎不適用'this'關鍵字。 – nakkeru

+0

所以,而不是'remove',你只是取代'removeChild'? –

回答

0

要使用removeChild之刪除元素,你必須選擇元素的父然後將要移除的元素傳遞給removeChild

this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode); 

這消除this.parentNode.parentNode

this.parentNode.parentNode.removeChild(this)沒有工作,因爲this不是this.parentNode.parentNode

+0

閱讀方法名稱。 'removeChild'它從父元素中移除傳入的子元素。因此,該方法的工作,它需要父母和孩子。 'parent.removeChild(child)' –

+0

它的工作原理和是的,我現在明白了。所以非常感謝;)那很快! (我想也很容易...... JS認爲我對第一語言有點複雜)。 – nakkeru

相關問題