Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » вопросы по javascript

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

Открыть новую тему     Написать ответ в эту тему

Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum
убрать

Код:
    $('tbody.tier-price-body tr').each(function (index) {
        $this = $(this);
        if ((first = $this.find('td:first')).length && (last = $this.find('td:last')).length) {
            quantity = quantityRegex.exec(first.text())[0];
            price = priceRegex.exec(last.text().replace(/ /g, '').replace(/,/g, '.'))[0];
            quantities.push({
                'qty': parseInt(quantity),
                'price': parseFloat(price)
            })
        }
    });

выше quantities = tierPrices;
не стоит сразу хранить в строковой переменной и знак валюты.
как и цену тогда проще хранить числом, а не строкой.
если цена нужна как float, то пройтись map по tierPrices и преобразовать как хочется.

Всего записей: 16622 | Зарегистр. 20-09-2014 | Отправлено: 09:08 21-04-2021
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
Цитата:
выше quantities = tierPrices;
не стоит сразу хранить в строковой переменной и знак валюты.
как и цену тогда проще хранить числом, а не строкой.
если цена нужна как float, то пройтись map по tierPrices и преобразовать как хочется.

спасибо, да, в таком случае видно что скрипт срабатывает, если в массиве цена числом. Если оставить как есть тогда получаю заданное в коде исключение "unable to retrive price".
Проблема в том, что цену в массиве этом нужно выводить в таком виде - так с бакенда приходит, а кроме прочего там цена в коде выше подставляется в поле цены в зависимости от кол-ва, и подставляется она в форматированном виде уже.  
Т.е. нужно tierPrices либо же quantities преобразовать чтобы цена числом стала.
 
Добавлено:
Mavrikii
вроде бы все получилось - https://jsfiddle.net/lagudal/z9prc2y4/8/
 
Наверное мапнуть массив можно проще и красивее - мне получается надо сначала запятые на точки поменять, а уже к этому parseFloat, иначе то что после запятой отсекается. В принципе, заданному функционалу вроде бы это не мешает, но для порядка.
 

Всего записей: 2157 | Зарегистр. 18-06-2006 | Отправлено: 10:36 21-04-2021
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum

Цитата:
Наверное мапнуть массив можно проще и красивее


Код:
formatedPrices = formatedPrices.map(item => {
  return {
    "qty": item.qty,
    "price": parseFloat(item.price.replace(',', '.'))
  };
});

Всего записей: 16622 | Зарегистр. 20-09-2014 | Отправлено: 03:38 22-04-2021
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
да, конечно, спасибо.
А подскажите, вот еще такая вещь. У меня там получается на разных локализациях цена эта выводится по разному. Т.е., вот так например, для стандартного, de_DE формата:  
29,99 € и соотв-но в кодировке 29,99\u00a0\u20ac
А для en_US формата:  
€29.99  - в кодировке \u20ac29.99 - т.е. уже сразу есть точка вместо запятой, но знак валюты перед ценой.
 
Вот в этом втором случае (если знак валюты перед ценой) parseFloat к числу не приведет - NAN.  
Поскольку скрипт один на обе локали, то я вначале заменяю запятую на точку, а потом еще раз замену, в этот раз стандартным regexp для таких случаев - убрать все кроме цифр и точки -  

Код:
replace(/[^0-9.]+/g,"")

Можно ли это сделать одним regexp - убрать все кроме цифр, точек и запятых, а запятые эти заменить на точки?

Всего записей: 2157 | Зарегистр. 18-06-2006 | Отправлено: 11:25 22-04-2021
MBK2

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Второй день бьюсь над проблемой, мозг уже замылился  
Из хрома пытаюсь сделать выбор и чтение текстового файла по инструкции  
 

Код:
 
 
var chosenFileEntry = null;  
 
chooseFileButton.addEventListener('click', function(e) {  
  chrome.fileSystem.chooseEntry({type: 'openFile'}, function(readOnlyEntry) {  
 
    readOnlyEntry.file(function(file) {  
      var reader = new FileReader();  
 
      reader.onerror = errorHandler;  
      reader.onloadend = function(e) {  
        console.log(e.target.result);  
      };  
 
      reader.readAsText(file);  
    });  
    });  
});  
   

 
Cобытие click вызывается, диалог выбора файла тоже, а вот openFile - нет  
Ладно, пробую по другой инструкции  
 
 
Код:
 
 
chooseFileButton.addEventListener("change", doOpen, false);  
function doOpen(evt) {  
            var file = evt.target.files[0],  
             
                reader = new FileReader();  
                reader.onload = function() {  
                console.log(this.result);  
 
 
                 
            };  
           
            reader.readAsText(file);  
             
          }  
 

 
После выбора файла в диалоге doOpen не вызывается тоже  
Самое страннное, что вторая конструкция кажется работала, но сейчас напрочь отказывается  
Что я делаю не так?

Всего записей: 5514 | Зарегистр. 18-09-2018 | Отправлено: 11:46 22-04-2021
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MBK2

Цитата:
Ладно, пробую по другой инструкции

работает
https://jsfiddle.net/erdouafm/
 
 
Добавлено:
Weinaum

Цитата:
Можно ли это сделать одним regexp - убрать все кроме цифр, точек и запятых, а запятые эти заменить на точки?

что мешает сделать так

Код:
item.price.replace(',', '.').replace(/[^\d\.]/, '')

Всего записей: 16622 | Зарегистр. 20-09-2014 | Отправлено: 22:56 22-04-2021
MBK2

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
работает

Да вчера уже разобрался - не работает из окна popup экстеншна, из обычного стационарного окна работает. Причем, судя по всему, такая фича только в хроме, в опере похоже, работает и  из popup.

Всего записей: 5514 | Зарегистр. 18-09-2018 | Отправлено: 05:40 23-04-2021
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
что мешает сделать так
 
Код:
item.price.replace(',', '.').replace(/[^\d\.]/, '')

 
ничего не мешает, я же написал что как раз так и сделал,  просто думал можно еще проще как то.

Всего записей: 2157 | Зарегистр. 18-06-2006 | Отправлено: 08:07 23-04-2021
WONDROUS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Просьба подсказать, как в этом примере переместить текст из JS в html и чтобы всё также работало?

Всего записей: 3491 | Зарегистр. 30-06-2002 | Отправлено: 19:07 25-04-2021 | Исправлено: WONDROUS, 22:09 25-04-2021
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WONDROUS

Цитата:
переместить текст из JS в html и чтобы всё также работало?

http://jsfiddle.net/jy2fscnk/

Всего записей: 16622 | Зарегистр. 20-09-2014 | Отправлено: 22:13 25-04-2021
WONDROUS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Спасибо за ответ и пример!

Всего записей: 3491 | Зарегистр. 30-06-2002 | Отправлено: 22:39 25-04-2021
WONDROUS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Подскажите. пожалуйста, почему в том примере, точка в конце текста печатается только если текст в параграфе? Получается, что текст надо обязательно как параграф использовать.
 
И ещё, просьба подсказать, как правильно дописать appear в данном коде?

Код:
$(function(){
var str = document.getElementById('typewriter').innerHTML,
    i = 0,
    isTag,
    text;
 
(function type() {
    text = str.slice(0, ++i);
    if (text === str) return;
 
    document.getElementById('typewriter').innerHTML = text;
 
    var char = text.slice(-1);
    if( char === '<' ) isTag = true;
    if( char === '>' ) isTag = false;
 
    if (isTag) return type();
    setTimeout(type, 60);
}());
});
 
$('.quote_text').appear(function() {
$("#type_writing").text();
});

Всего записей: 3491 | Зарегистр. 30-06-2002 | Отправлено: 20:13 26-04-2021 | Исправлено: WONDROUS, 20:53 26-04-2021
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WONDROUS

Цитата:
почему в том примере, точка в конце текста печатается только если текст в параграфе?

потому что проверка  

Код:
if (text === str) return;

идет до вывода чего либо, поэтому последний символ игнорируется.
 

Цитата:
как правильно дописать appear в данном коде?

как то так

Код:
$(function(){
var el  = document.getElementById('typewriter'),
    str = el.innerHTML,
    i = 0,
    isTag,
    text;
 
function type() {
    text = str.slice(0, ++i);
    if (text === str) return;
 
    el.innerHTML = text;
 
    var char = text.slice(-1);
    if( char === '<' ) isTag = true;
    if( char === '>' ) isTag = false;
 
    if (isTag) return type();
    setTimeout(type, 60);
};
 
$('.quote_text').appear(function() {
     type();
});
});
 

Всего записей: 16622 | Зарегистр. 20-09-2014 | Отправлено: 21:43 26-04-2021
WONDROUS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Спасибо за ответ!
 
С таким кодом анимация вообще не работает.

Всего записей: 3491 | Зарегистр. 30-06-2002 | Отправлено: 21:52 26-04-2021
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WONDROUS

Цитата:
С таким кодом анимация вообще не работает

я же написал
Цитата:
как то так
, а не "взять и скопировать".
сам код должен работать, только если appear работает как то не так.
я не помню откуда вы его берете, поэтому проверить не могу.

Всего записей: 16622 | Зарегистр. 20-09-2014 | Отправлено: 22:15 26-04-2021
WONDROUS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Если про appear, то отсюда. В других примерах он работает. А эффект анимации текста отсюда, ссылка была ранее.

Всего записей: 3491 | Зарегистр. 30-06-2002 | Отправлено: 22:19 26-04-2021
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WONDROUS

Цитата:
В других примерах он работает

ну, и что не так?
http://jsfiddle.net/ovunsdy6/

Всего записей: 16622 | Зарегистр. 20-09-2014 | Отправлено: 22:21 26-04-2021
WONDROUS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Спасибо большое, теперь работает! Но, теперь на примере прошлых решений не соображу, как добавить delay и offset. Чтобы при достижении дива шла задержка и потом анимация, или оффсет и потом анимация. В других было так:

Код:
$('.wrapper').appear(function() {
    setTimeout(function() {
$('.timer').each(count);
    , 300);
},{accX: 0, accY: -100});
});

Всего записей: 3491 | Зарегистр. 30-06-2002 | Отправлено: 22:38 26-04-2021 | Исправлено: WONDROUS, 23:46 26-04-2021
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WONDROUS

Цитата:
В других было так:

и здесь будет также (не дословно, конечно же, такой же принцип).

Всего записей: 16622 | Зарегистр. 20-09-2014 | Отправлено: 00:26 27-04-2021 | Исправлено: Mavrikii, 00:27 27-04-2021
WONDROUS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Если я тот принцип понял немного, то с новым перепробовал по-разному и не получается. Здесь $(el).appear(type); и не понятно, где и какие скобки нужны, если нужны, запятые.

Всего записей: 3491 | Зарегистр. 30-06-2002 | Отправлено: 00:41 27-04-2021
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

Компьютерный форум Ru.Board » Интернет » Web-программирование » вопросы по javascript


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru