Задать вопрос
@Alisa94

Как по клику на кнопку получить определённую часть её текста?

Есть кнопки, текст которых среди прочего содержит в кавычках id. Как при клике на кнопки выводить в консоль эти id?

<ul>
  <li><button>First - Wall ["143"]</button></li>
  <li><button>Next - Floor ["153"]</button></li>
  <li><button>First - Wall ["654"]</button></li>
  <li><button>Second - Item ["764"]</button></li>
<ul>

При нажатии на первую кнопку в консоли должен получит число 143, при нажатии на вторую - 153...
  • Вопрос задан
  • 84 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Как достать текст из элемента:

const getText = el => el.textContent;
// или
const getText = el => el.innerText;
// или
const getText = el => el.innerHTML;
// или
const getText = el => el.lastChild.nodeValue;
// или
const getText = el => el.childNodes[0].data;

Как вырезать из текста нужный кусок:

const getValue = text => text.match(/"(.*?)"/)[1];
// или
const getValue = text => text.split('"').slice(-2).shift();
// или
const getValue = text => text.replace(/^.*?"|"[^"]*$/g, '');
//
const getValue = text => `${/(?<=")[^"]+/.exec(text)}`;
// или
const getValue = text =>
  JSON.parse(text.slice(-~text.indexOf('['), text.indexOf(']')));

Как обработать клики:

document.querySelectorAll('li button').forEach(function(n) {
  n.addEventListener('click', this);
}, e => console.log(getValue(getText(e.target))));

// или

document.querySelector('ul').addEventListener('click', ({ target: t }) => {
  if (t.tagName === 'BUTTON') {
    console.log(getValue(getText(t)));
  }
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы