Связывание объекта выделения с HTML-элементами DOM
Кто-нибудь знает способ сопоставления объекта Selection с HTML-элементами dom, основанными на чем-то еще, кроме значения элемента?
Давайте рассмотрим таблицу ниже:
123 | 246 | 345
456 | 123 | 567
Пользователь хочет изменить первый ряд, выделив его мышью. В javaScript я могу соответствовать
window.getSelection().toString().split("\t")
с
document.getElementsByTagName("td")
найти выбранные клетки. Но для этого соответствия я не нашел другого средства, кроме объединения значений элементов (innerHTML). Это будет означать, что все ячейки с одинаковым значением (в примере второй столбец во второй строке) становятся измененными, хотя и не выбраны. Мой код для справки:
function setAsNumeric(selection){
var allTds = document.getElementsByTagName("td");
var results = [];
var selArray = selection.toString().split("\t").join("\r\n").split("\r\n")
for ( var i = 0; i < selArray.length; i++ ) {
for ( var x=0; x < allTds.length; x++ ){
if ( allTds[x].innerHTML == selArray[i] ){
results.push(allTds[x]);
}
}
}
var n;
for (i = 0; i < results.length; i++){
n = document.createElement("td");
n.innerHTML = results[i].innerHTML;
n.className = "number";
results[i].parentNode.insertBefore(n, results[i]);
results[i].parentNode.removeChild(results[i]);
}
}