Обработка вызывающего элемента html с помощью javascript, dojo или jquery

У меня есть следующая таблица:

<table>
    <tr><td><span onClick='toggleFunction();'>ABC</span></td></tr>
    <tr><td><span onClick='toggleFunction();'>PQR</span></td></tr>
    <tr><td><span onClick='toggleFunction();'>XYZ</span></td></tr>
    <tr><td><span onClick='toggleFunction();'>LMN</span></td></tr>
</table>

HTML создается динамически.

function toggleFunction() {
  var innerHtml = //code to get inner html of calling element here
  console.info(innerHtml);
} 

Я хочу получить внутренний HTML-код span, из которого toggleFunction() вызывается через onClick.

Например, когда щелчок находится в строке 1, ABC должен быть напечатан на консоли. Но когда щелчок находится в строке 3, должен быть напечатан XYZ.

Возможно ли это через Javascript или Dojo? Я не могу использовать JQuery. Однако я хотел бы знать, возможно ли это с помощью JQuery или нет.

Обратите внимание, что элемент span не имеет идентификатора.

Это не дубликат другого вопроса, например:

1) В принятом решении используется встроенный javascript только для предупреждения innerHTML. Однако для меня мне просто нужен способ получить дескриптор, чтобы я мог выполнять гораздо более необходимую обработку внутри моей функции.

2) В других ответах на вопрос используется идентификатор элемента, что не в моем случае.

@adiga Это не повторяющийся вопрос. Ребята, лучше сначала прочтите вопрос. Не переусердствуйте и не отговаривайте вопросов.

Vicky 04.12.2018 09:33

используйте toggleFunction вместо alert. Я нашел как минимум 10 дубликатов.

adiga 04.12.2018 09:35

Ответ просто var innerHtml = event.target.innerHTML;

Zakaria Acharki 04.12.2018 09:37

@adiga: Правда? Где вопрос, который отвечает на мой вопрос. Если toggleFunction находится в отдельном файле, console.info (this.innerHTML) внутри toggleFunction не работает. Если это так, почему бы не предоставить такой же JSFiddle, если вы чувствуете, что знаете ответ.

Vicky 04.12.2018 09:38

@ZakariaAcharki: Отлично. Если это сработает, то это то, что я искал. И ни у одного из других вопросов нет этой строчки в качестве ответа.

Vicky 04.12.2018 09:39

Отдельный файл, тот же файл не имеет значения. console.info(this.innerHTML) не будет работать, потому что это относится к объекту Window, а не к вашему элементу.

adiga 04.12.2018 09:45

@adiga: Вы действительно не поняли вопроса. Ты? Я ясно упомянул, что id отсутствует. Все, на что вы меня перенаправляете, - это ответы с использованием идентификатора или имени класса css или чего-то в этом роде. Даже я могу поискать их. Пожалуйста, оставь это. Я получил то, что искал. Не нужно ничего доказывать.

Vicky 04.12.2018 09:50
Человек, просто замените alert своей функцией в первом дубликате. Добрый день.
adiga 04.12.2018 09:56

Ваш ответ правильный в предложенном дубликате: stackoverflow.com/a/25005107/2181514 - добавьте this, то есть: <span onClick='toggleFunction(this);'>function toggleFunction(el) {

freedomn-m 04.12.2018 10:01

Возможный дубликат Javascript: как получить innerHTML нажатой кнопки

freedomn-m 04.12.2018 10:01
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
12
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать event.target для таргетинга на выбранный элемент, а затем получить контент с помощью textContent, например:

var innerHtml = event.target.textContent;

ПРИМЕЧАНИЕ 1:td должен быть закрыт перед tr, поэтому используйте </td></tr> в конце вместо </tr></td>.

ЗАМЕТКА 2: У вас есть опечатка в переменной, переданной в console.info(). Это должно быть innerHtml вместо innnerHtml.

ЗАМЕТКА 3: Поскольку внутри столбцов нет HTML, лучше использовать textContent вместо innerHTML.

function toggleFunction() {
  var innerHtml = event.target.textContent;
  console.info(innerHtml);
}
<table>
  <tr>
    <td><span onClick='toggleFunction();'>ABC</span></td>
  </tr>
  <tr>
    <td><span onClick='toggleFunction();'>PQR</span></td>
  </tr>
  <tr>
    <td><span onClick='toggleFunction();'>XYZ</span></td>
  </tr>
  <tr>
    <td><span onClick='toggleFunction();'>LMN</span></td>
  </tr>
</table>

Другие вопросы по теме