Как из 1234 сделать 1 234 в css или html?

12
Klopopryg
На сайте с 29.12.2004
Offline
344
661

Есть число 1234, нужно получить 1 234, но пробел между 1 и 2 в коде на ставить, а чтобы через css или html.

п.с. без пхп и скриптов!

Лучше выстрелить, перезарядить и еще раз выстрелить, чем светить фонариком и спрашивать - "кто тут?"
SeVlad
На сайте с 03.11.2008
Offline
1609
#1
Klopopryg:
Есть число 1234, нужно получить 1 234, но пробел между 1 и 2 в коде на ставить, а чтобы через css или htm

Типа так


<span style="..">1</span><span style="..">234</span>

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
Klopopryg
На сайте с 29.12.2004
Offline
344
#2

а просто нельзя, например так

<span style="bubu">1234</span>

?

SeVlad
На сайте с 03.11.2008
Offline
1609
#3
Klopopryg:
а просто нельзя, например так

Ну есть first-letter.. Но тогда не получится 10 234. А это ж наверняка надо будет(?)

Но мб кто-то ещё что подскажет.

Klopopryg
На сайте с 29.12.2004
Offline
344
#4

в том то и дело, что надо 123 456 789 - и это не предел

A
На сайте с 05.02.2014
Offline
19
#5
Klopopryg:
в том то и дело, что надо 123 456 789 - и это не предел

Предложение подобного форматирования есть давно, но в стандарт не включено https://wiki.csswg.org/ideas/content-formatting

К сожалению, нет и выделения n-го символа https://css-tricks.com/a-call-for-nth-everything/

Поэтому сейчас никак в css этого не сделать без скриптов.

P.S. Если страница генерируется динамически, то проще на сервере сразу форматировать, иначе небольшой кусок на javascript (можно и без дополнительных библиотек).

Klopopryg
На сайте с 29.12.2004
Offline
344
#6
Asty:
иначе небольшой кусок на javascript (можно и без дополнительных библиотек).

а есть простое решение? то, что с ходу нашёл, не рабочее :(

A
На сайте с 05.02.2014
Offline
19
#7
Klopopryg:
а есть простое решение? то, что с ходу нашёл, не рабочее :(

Вставку пробелов в строку выполняет регулярное выражение. Вот пример на Javascript для обработки всех элементов с классом "n".

<span class='n'>12345678</span>

<br>
<span class='n'>1234567891234567</span>

<script>
var x = document.getElementsByClassName('n');
for (var i = 0; i < x.length; i++) {
x.innerHTML = x.innerHTML.replace(/\B(?=(\d{3})+(?!\d))/g, " ");
}
</script>
Klopopryg
На сайте с 29.12.2004
Offline
344
#8

в IE не работает смотреть в IE :(

CunninGFox
На сайте с 05.10.2007
Offline
167
#9

Klopopryg, в хроме пашет, но вот есть косячок:

Комплексное продвижение сайтов: увеличение количества клиентов для Вашей компании. От 8.000 рублей. Возможна работа по договору и оплата по безналу. Пишите: seo@sergeus.ru
A
На сайте с 05.02.2014
Offline
19
#10
Klopopryg:
в IE не работает смотреть в IE :(

Этот код отлично работает с IE9+.

Так как на странице уже используете jQuery, то можно поменять всё с его помощью:

$(".price").each(function( index ) {

$(this).html($(this).html().replace(/\B(?=(\d{3})+(?!\d))/g, " "));
});

Либо используйте ручную реализацию getElementsByClassName, например, отсюда

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий