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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

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

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 и преобразовать как хочется.

Всего записей: 15100 | Зарегистр. 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, иначе то что после запятой отсекается. В принципе, заданному функционалу вроде бы это не мешает, но для порядка.
 

Всего записей: 2152 | Зарегистр. 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(',', '.'))
  };
});

Всего записей: 15100 | Зарегистр. 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 - убрать все кроме цифр, точек и запятых, а запятые эти заменить на точки?

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

Silver 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 не вызывается тоже  
Самое страннное, что вторая конструкция кажется работала, но сейчас напрочь отказывается  
Что я делаю не так?

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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



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

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

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

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

http://jsfiddle.net/jy2fscnk/

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



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

Всего записей: 3346 | Зарегистр. 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();
});

Всего записей: 3346 | Зарегистр. 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();
});
});
 

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



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

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

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

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

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

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



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

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

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

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

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

Всего записей: 15100 | Зарегистр. 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});
});

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

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

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

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

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



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

Всего записей: 3346 | Зарегистр. 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

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru