2012-12-09 28 views
1

我有一個數據輸入表。爲了簡單起見,可以說它只有一列而沒有標題。我希望JQuery遍歷所有行,以查看同一列中任何單元格中的文本是否在另一行中重複。有沒有簡單的方法來做到這一點?如何找到兩個相同的文本節點

<tr><td>one</td></tr> 
<tr><td>two</td></tr> 
<tr><td>three</td></tr> 
<tr><td>four</td></tr> 
<tr><td>five</td></tr> 
<tr><td>one</td></tr> <!--It is doubled--> 
<tr><td>six</td></tr> 
+1

這聽起來像你正在做一些客戶端的JavaScript - 什麼這個該怎麼做與MySQL或確實PHP的呢?請使用相關標籤。 –

+0

錯誤的標籤對不起,我沒有注意到 – Dharman

+0

請顯示你的工作 - 你有什麼嘗試? – Anov

回答

1

您可以使用這樣的事情:

var contents = new Array(); 
$("td").each(function(idx) { 
    var value = $(this).html(); 
    if($.inArray(value, contents) == -1) { 
     contents.push(value); 
    } else { 
     console.log("Row '" + idx + "' : duplicate value '" + value +"'"); 
    } 
}); 

這將通過一個以每個一排和檢索值,檢查以前的值(存儲在陣列)如果該值已經存在,如果不存在,則將其添加到數組中,否則它將在控制檯中顯示一條消息。

相反的console.log()你可以做你需要什麼,它存儲在某處,更改類等

+1

這很簡單,但我沒有拿出這個。很高興我問。只有一個錯誤:行'var contents = new Array();'應該在函數內部,否則再次調用的函數將始終顯示重複 – Dharman

+0

不,將該行放在函數中將永遠不會顯示重複,因爲它將覆蓋值每次都有一個新的數組。如果您想多次調用它,請將其包裝在一個函數中並調用該函數。 – koopajah

+0

:)正確的我不得不圍繞另一個函數 – Dharman

0
SELECT col FROM mytable GROUP BY col HAVING COUNT(*) > 1 
+1

我在談論JQuery其實並不是MYQSL,但感謝您的回答 – Dharman

+0

啊哈,不用擔心,您最初已經標記了您的問題'mysql'。 –

1
var nodeArr = []; 
$('tr td').each(function() { 
    var textStr = $(this).text(); 
    if (typeof nodeArr[textStr] === 'undefined') { 
     nodeArr[textStr] = $(this); 
    } else { // we have a duplicate 
     var el1 = nodeArr[textStr], 
      el2 = $(this); 
     // and do something with them! 
    }   
}); 
相關問題