2010-09-06 128 views
44

按位置查找元素並在Javascript中查找元素的位置是沒有問題的。 但是有一般的方法來比較它們嗎?有沒有辦法檢查兩個DOM元素是否相等?

我能想到的唯一方法是比較id或classnames,但不是所有的元素都有id或classnames。

+1

什麼是「相等」在您的上下文中,然後,如果不是相同的ID?它是否是相同的元素類型?或相同的內容?請稍微擴大你的問題... – peirix 2010-09-06 05:57:06

+1

比較一下他們呢?高度,背景顏色,Z指數?你想要比較什麼? – Robert 2010-09-06 05:57:29

+0

你是什麼意思「平等」?你的意思是當兩個變量指向相同的元素?或者你的意思是這兩個元素「看起來一樣」。如果是這樣,那麼您需要定義「看起來相同」的含義:xy位置計數是否相同,相同的透明度/不透明度計數,相同的文本內容? – slebetman 2010-09-06 05:58:45

回答

38

如果您想比較兩個元素指針作爲相同元素,只需使用比較運算符即可。這可以很容易證明,因爲

document.body === document.body 

例如,如果我以某種方式有兩種元素的引用,我不知道:

if (element1 === element2) ... 
+0

感謝您的建議! – 2015-10-19 02:01:18

+0

@ www139 - 爲什麼推薦?請提供證據 – vsync 2016-05-17 14:53:43

+0

@vsync看看這個問題http://stackoverflow.com/questions/359494/does-it-matter-which-equals-operator-vs-i-use-in-javascript-comparisons和http: //stackoverflow.com/questions/10679762/how-to-compare-two-html-elements – www139 2016-05-18 14:59:05

30

在現代瀏覽器有兩種方法比較節點。

var a = document.createElement('div'); 
var b = document.createElement('div'); 
b.isEqualNode(a); // true 

b.isSameNode(a); //false 

至於IE瀏覽器,它的DOM元素具有非斯塔納德屬性,uniqueID。 但我無法想象它可以在這種情況下有用,因爲是的,你實際上可以比較兩個指針。

+12

MDN建議這是折舊和使用==或===在由德蘭的答案。 https://developer.mozilla.org/en-US/docs/DOM/Node.isSameNode – Andru 2012-09-16 09:08:02

+0

@Andru,哦,一切都變化相當快近年:))) – shabunc 2013-07-12 14:18:38

+2

'isSameNode'函數已被棄用,你應該使用'改爲「isEqualNode」。請參閱https://developer.mozilla.org/en-US/docs/Web/API/Node.isSameNode – idFlood 2014-11-24 14:41:02

相關問題