Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2016, 21:37   #1
Yatsvyas
 
Регистрация: 10.04.2016
Сообщений: 5
По умолчанию Текст из элемента.

Приветствую!
Собственно говоря, давайте сразу к теме. Мне нужно сделать скрипт, чтобы он брал текст из элемента и заносил его в переменную. Сколько я ни пытался, ни рылся - не смог решить это.

Код HTML:
<span id="balance">5000</span>
Из приведённой выше части кода, мне нужно создать переменную, в которой будет хранится цифра/текст - 5000. Результат, например, x = 5000.

Сам я пытался -

Код HTML:
var x = document.getElementById('balance')
Но дальше этого не продвинулся. Не знаю, как достать текст из элемента. Разные методы .text и другие я не понял.

Прошу помощи у опытных людей. Заранее спасибо, и благодарю тех кто хотя бы проявил интерес к моему вопросу.
Yatsvyas вне форума Ответить с цитированием
Старый 18.11.2016, 22:42   #2
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Цитата:
Но дальше этого не продвинулся.
чтобы продвинутся надо открыть справку и прочитать.
come-on вне форума Ответить с цитированием
Старый 18.11.2016, 23:29   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Yatsvyas, а если так написать, что будет?

Код:
<span id="balance">5000</span>

<script>
var x = document.getElementById('balance').innerHTML;
alert("balance = "+x);
</script>
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.11.2016, 23:37   #4
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Лучший способ, ИМХО, юзать textContent.
В простом случае вроде твоего, это будет взять у элемента свойство .textContent.
В противном случае можно дернуть рекурсивную функцию из sizzle/jQuery:
Код:
getText = Sizzle.getText = function( elem ) {
	var node,
		ret = "",
		i = 0,
		nodeType = elem.nodeType;

	if ( !nodeType ) {
		// If no nodeType, this is expected to be an array
		while ( (node = elem[i++]) ) {
			// Do not traverse comment nodes
			ret += getText( node );
		}
	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
		// Use textContent for elements
		// innerText usage removed for consistency of new lines (jQuery #11153)
		if ( typeof elem.textContent === "string" ) {
			return elem.textContent;
		} else {
			// Traverse its children
			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
				ret += getText( elem );
			}
		}
	} else if ( nodeType === 3 || nodeType === 4 ) {
		return elem.nodeValue;
	}
	// Do not include comment or processing instruction nodes

	return ret;
};
Тупой хардкорный вариант:
Код:
var x = document.getElementById('balance').innerHTML;
Тут оно работает только если ты всегда уверен, что внутри нужного тега именно то, чего ты ожидаешь =)

Учти, что во всех приведенных вариантах ты получишь строку, а не число.

П.С. Зацените перебор дочерних узлов, офигенчик же, да? Прям как котяток в интернетах посмотрел ^_^.
П.П.С. к первому П.С.: Очень изящно, но слишком наивно перезаписывать входной параметр функции, я бы завел новую переменную. И было бы неплохо также прокомментить типы узлов, чтобы читатель не лез в таблицу. (не к этому куску, но) То же сказал бы про коды символов, клавиш, кнопок мыши, ну и любые другие "магические" числа.
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 18.11.2016, 23:40   #5
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Yatsvyas, а если так написать, что будет?

Код:
<span id="balance">5000</span>

<script>
var x = document.getElementById('balance').innerHTML;
alert("balance = "+x);
</script>
Когда-нибудь это превратится в такое:
Код:
<span id="balance">5&thinsp;000<i class="icons icons-usd"></i></span>

<script>
var x = document.getElementById('balance').innerHTML;
alert("balance = "+x);
</script>
То, что я предложил не сильно кнеш поможет от символов разбиения на разряды числа, зато выбросит ненужный тег)
Alar, верни репу!

Последний раз редактировалось Naive; 18.11.2016 в 23:42.
Naive вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить текст из элемента ListBox Maray Win Api 1 24.10.2016 10:45
[XML] Нахождение аттрибута элемента по значению дочернего элемента. Banavia C# (си шарп) 10 29.07.2013 00:48
Как получить текст нулевого элемента ComboBox wm_leviathan C# (си шарп) 7 20.04.2013 23:42
можно ли прописать стиль для элемента "внутри" этого самого элемента ? vedro-compota HTML и CSS 8 03.05.2010 17:24
Си -Расположить элементы в порядке возрастания от первого нулевого элемента до отрицательного элемента Freia Помощь студентам 17 13.12.2009 15:41