2015-12-29 3 views
0

Я использую document.getElementById, чтобы получить innerHTML от <div>. Это будет возвращать что-то вроде этого ...Извлечение фрагмента текста из строки - Javascript

<span style="font-size: 18px; font-weight:bold; color: #545454;">Unit 1, Lesson 2: Ordering Large Numbers</span>

Я хочу, чтобы извлечь «Раздел 1, Урок 2» часть из этой строки с помощью Javascript. Это не всегда будет «Урок 1, Урок 2». Это может быть «Узел 10, Урок 8», поэтому использование substring(), похоже, отсутствует.

желаемого результата ...

<span style="font-size: 18px; font-weight:bold; color: #545454;">Unit 1, Lesson 5: Ordering Large Numbers</span> должен давать "Раздел 1, Урок 5"

<span style="font-size: 18px; font-weight:bold; color: #545454;">Unit 11, Lesson 28: Ordering Large Numbers</span> должен уступить "Раздел 11, Урок 28"

Я не годится с Javascript, поэтому, если мне не хватает простой функции для этого, пожалуйста, дайте мне знать, что это такое.

Редактировать: В противном случае, если есть способ отрезать все после «:», я тоже мог бы с этим справиться.

ответ

2

Вы можете использовать textContent, который будет возвращать только текст без html.

Так что если у вас есть элемент:

<span id="test"><span style="font-size: 18px; font-weight:bold; color: #545454;">Unit 1, Lesson 2: Ordering Large Numbers</span></span>

Вы можете получить его 'Unit 1, Урок 2' часть, как это:

document.getElementById('test').textContent.split(":")[0]; 
+0

Мне нравится внешний вид этого, но я получаю «TypeError: document.getElementByI d (...). innerText не определено «когда я пытаюсь. – gtilflm

+0

right, innerText может не работать для firefox, вместо этого используйте textContent. Я обновил ответ – paulitto

+0

У нас победитель! Благодаря! – gtilflm

1

Вы можете использовать функцию JavaScript в регулярное выражение соответствия схеме:

var pattern = /.*(Unit \d+, Lesson \d+):/ 
var el = document.getElement....innerHTML 
var match = pattern.match(el)[1]; 
alert(match) 
Смежные вопросы