Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Добавление знака в число
 
 автор: golduck   (02.03.2007 в 16:58)   письмо автору
 
 

Здравствуйте.

Есть переменная pert, она всегда только integer.
Подскажите пожалуйста, как добавить запятую или точку.

Примеры:
1) Было 1000, стало 1.000

2) Было 1000000, стало 1.000.000 и т.д.

   
 
 автор: 12345   (02.03.2007 в 17:55)   письмо автору
 
   для: golduck   (02.03.2007 в 16:58)
 

<script>
String.prototype.invert=function(){return this.match(/./g).reverse().join('');}
alert("1000000".invert().replace(/(...)/g,"$1.").invert());</script>
(для беззнаковых)

   
 
 автор: golduck   (02.03.2007 в 20:36)   письмо автору
 
   для: 12345   (02.03.2007 в 17:55)
 

Хм... А как будет выглядеть код, если он не будет использоваться в качестве alert'а... Вывод на экран будет осуществляться примерно вот так:

                        var tab = find("//table[@class='x5' and position()=2]",XPFirst);
                        var pert = 5000;
            var td1=elem('td','кол-во');
            var td2=elem('td','('+pert+')');
            var tr1=elem('tr','');
            tr1.setAttribute('class', 'x1');
            tr1.appendChild(td1);
            tr1.appendChild(td2);
            tab.appendChild(tr1);



Это кусок кода из скрипта для FireFox'а. Как в переменную pert вставить запятую или точку...

   
 
 автор: CNT   (02.03.2007 в 23:48)   письмо автору
 
   для: golduck   (02.03.2007 в 20:36)
 

1. Сразу после первого тега <script> пропишите определение функции, любезно предоставленной вам участником 12345
String.prototype.invert=function(){return this.match(/./g).reverse().join('');}
PS. Если скрипты находятся во внешнем подключаемом js-файле, то пропишите вышеуказанную строку первой в этом js-файле.

2. Затем в вашем коде строку
var pert = 5000;
замените на
var pert = 5000;
pert = pert.toString(10).invert().replace(/(...)/g,"$1.").invert().replace(/^\./,"");

   
 
 автор: 12345   (03.03.2007 в 01:41)   письмо автору
 
   для: CNT   (02.03.2007 в 23:48)
 

Тогда исправить лучше так,
<script> 
String.prototype.invert=function(){return this.match(/./g).reverse().join('');} 
alert("1000000".invert().replace(/(...)(?=.)/g,"$1.").invert());</script>
, но и этот можно написать попроще. Ещё неизвестно, как со знаком. Если надо учесть, то пишем так:
<script> 
String.prototype.invert=function(){return this.match(/./g).reverse().join('');} 
alert("-1000000".invert().replace(/(...)(?=\d)/g,"$1.").invert());</script>

   
 
 автор: CNT   (03.03.2007 в 05:43)   письмо автору
 
   для: 12345   (03.03.2007 в 01:41)
 

Согласен, так лучше.

Замечу, что судя по наличию текста
var td1=elem('td','кол-во');
для топикстартера знак неактуален.

   
 
 автор: CNT   (02.03.2007 в 23:40)   письмо автору
 
   для: 12345   (02.03.2007 в 17:55)
 

Есть баг, который проявляется, если количество цифр в исходном числе кратно трем.
Исправляю:
<script>
String.prototype.invert=function(){return this.match(/./g).reverse().join('');}
alert("123456".invert().replace(/(...)/g,"$1.").invert().replace(/^\./,"");</script>

   
 
 автор: golduck   (03.03.2007 в 12:49)   письмо автору
 
   для: CNT   (02.03.2007 в 23:40)
 

Спасибо огромное CNT и 12345.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования