Так что это довольно простая схема, когда один хочет, чтобы делать операции на отдельных персонажах, но у вас есть данные в блоках пункта или слов , Первое, что нужно сделать было бы перебрать все пункты, например, так:
var paras = document.querySelectorAll('p');
for (var i = 0; i < paras.length; i++) {
var para = paras[i];
var text = para.textContent;
var split = para.split('');
var newText = '';
for (var j = 0; j < split.length; j++) {
newText += '<span class="char">' + split[j] + '</span>';
}
para.innerHTML = newText;
}
Затем вы хотите настроить щелчок слушателя на теле или на каждом пункте, и это событие (будучи получены из щелкнув один из односимвольных интервалов) будет содержать всю информацию о местоположении этого конкретного символа.
document.body.addEventListener('click', function(e) {
if (e.target.classList.contains('char')) {
console.log(e.clientLeft, e.clientTop);
}
});
Возможное преимущество этого метода по сравнению с Selection.focusNode том, что она также позволяет один символ должен быть изменен в качестве элемента, а не только констатировали.
Обратите внимание, что это уничтожит события и ссылки на объекты - если вам нужно их сохранить, используйте что-то вроде jQuery's replaceWith
и перебирайте текстовые узлы.
Непонятно, что было задано ... – epascarello
Возможный дубликат [Как определить положение символа в элементе div?] (Http://stackoverflow.com/questions/8105824/how-to-determine-the- position-of-a-character-in-a-div-element) –
@DouglasDaseeco Насколько я могу судить, OP хочет узнать, какой символ в текстовом узле пользователь нажал. Связанный ответ делает именно эту вещь. Несмотря на это, я с нетерпением жду вашего быстрого и портативного решения. –