2017-04-10 79 views
1

我有一個UI,當你按下FIGHT時,刪除四個電流div FIGHT,STATUS,BLANK ,BLANK2並用新的替換它們。這工作除了STATUS div。它帶來了錯誤Javascript錯誤:未捕獲TypeError:無法執行'節點'上的'removeChild':參數1不是'節點'類型

"Uncaught TypeError: Failed to execute 'removeChild' on 'Node': parameter 1 is not of type 'Node'."

並停止其他divs刪除。當我拿出代碼去除STATUS div parent0.removeChild(status);時,代碼正常工作,除了STATUS div刪除這個明顯的例外。

我完全困惑,因爲這四個div嵌套在一個名爲UI的div中,並且我認爲錯誤指的是STATUS不是UI的子節點?情況並非如此。任何幫助,將不勝感激。

的jsfiddle:

https://jsfiddle.net/razorleaff/abks2dvq/3/ 
+0

凡'status'爲'parent0.removeChild(狀態)定義;'我沒有看到它的任何地方被定義。 – NewToJS

+0

'status'是一個javascript保留字 – Beginner

回答

0

做這樣

parent0.removeChild(status); 

是一個壞練習,這會導致這樣的問題, 因爲狀態是一個JavaScript保留字,而不是那麼做ST做

parent0.removeChild(document.getElementById('status')); 

Definition and Usage The removeChild() method removes a specified child node of the specified element.

返回被刪除的節點作爲一個節點對象,或NULL,如果節點不存在。

Parameter | Type | Description 
    node  Node object  

必填。節點對象要刪除

Updated Fiddle here

+0

你的代碼修復了我的問題。感謝您告訴我並告訴我使用removeChild()的正確方法。我完全忘了javascript保留字。 – Razorleaff

+0

'status'不是[保留字](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Reserved_keywords_as_of_ECMAScript_2015)。正如[Pig Ball的答案](http://stackoverflow.com/a/43317786/778975)指出的,它是'window'對象的屬性,它在瀏覽器中是全局對象,使'status'成爲全局變量指的是['window.status'](https://developer.mozilla.org/en-US/docs/Web/API/Window/status)。 –

1

問題是window對象有一個名爲status財產,你無法通過id訪問狀態元素。所以,你的代碼應該是:(總是使用document.getElementById獲得使用id元素)

parent0.removeChild(document.getElementById('status')); 

代替:

parent0.removeChild(status); 
+0

將ID從狀態更改爲其他內容修復了我的問題謝謝。 – Razorleaff

相關問題