Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 08.02.2013, 12:35
Интересующийся
Отправить личное сообщение для Sober_exe Посмотреть профиль Найти все сообщения от Sober_exe
 
Регистрация: 27.02.2012
Сообщений: 18

столкнулся с проблемой.
Если на странице будет присутствовать не один такой атрибут то он в каждый записывал значение всех строк.
Решил сделать через .each(), но повалились другие ошибки, через консоль выяснил, что в this передаётся элемент дом дерева с набором свойств.
И в итоге рабочая версия такая:

$.fn.separation = function(){
    this.each(function(){
    var target = this.childNodes[0].nodeValue;
    this.setAttribute('basicValue', target.match(/\d+/g));
    var re = /(?=\B(?:\d{3})+(?!\d))/g;
    this.innerHTML = target.replace( re, ' ' );
    return;
    });
}
Ответить с цитированием
  #12 (permalink)  
Старый 08.02.2013, 12:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Sober_exe,
Возможный вариант ...
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<script src="http://code.jquery.com/jquery-latest.js"></script>
  <title></title>
</head>
<body>
<div class="container" >
 1234567890
 </div>
 <div class="container" >
 777777777
 </div>
<script type="text/javascript">
$.fn.separation = function (options) {
    var o = jQuery.extend({
            separator: ' ', //разделитель по умолчанию
            recovery : false //востановить прежнее значение
                          }, options);
    return this.each(function (index, self) {
        var target = $(self).text();
        !$(self).data('recovery') && $(self).data('recovery', target); //создаём атрибут специальный куда запишем начальное значение, для того что бы, можно было к нему обратится при необходимости
        var re = /(?=\B(?:\d{3})+(?!\d+))/g;
        target = o.recovery ?  $(self).data('recovery') : $(self).data('recovery').replace(re, o.separator) ;
        $(self).html(target);
    })
}
alert($('.container').separation().text());//разделить на 3
alert($('.container').separation({separator:'__'}).text()); //разделить на 3 и-или поменять разделить
alert($('.container').separation({'recovery':true}).text());//востановить прежнее значение
</script>
</body>

Последний раз редактировалось рони, 08.02.2013 в 12:55.
Ответить с цитированием
  #13 (permalink)  
Старый 08.02.2013, 14:01
Интересующийся
Отправить личное сообщение для Sober_exe Посмотреть профиль Найти все сообщения от Sober_exe
 
Регистрация: 27.02.2012
Сообщений: 18

круто!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разделение разрядов числа пробелами. Kolyaj Ваши сайты и скрипты 17 12.03.2020 15:57
Расчет числа последовательностей Slavenin Оффтопик 10 20.03.2012 13:58
Числа в поле для вычисления sergey-16a1 Javascript под браузер 5 19.08.2010 17:29
число 76.4705882.. сделать 76.47? (числа всегда разные) TongaG Ваши сайты и скрипты 3 19.01.2010 07:35
как "выхватить" часть числа POLOS Общие вопросы Javascript 1 17.03.2009 12:55