Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Найти и умножить число (https://javascript.ru/forum/misc/4580-najjti-i-umnozhit-chislo.html)

stepan86 05.08.2009 00:32

Найти и умножить число
 
Здравствуйте.
Подскажите пожалуйста как решить проблему.
Проблему заключается в следующем:
На сайте есть цены, но они указаны в USD. Необходимо перевести их в рубли, но сделать это можно только при помощи Java script (по другому не дают).
Цена на сайте указывается так:

<p class="i-price">3.60 USD</p>

Необходимо сделать так, чтоб в итоге получилось

<p class="i-price">126 руб</p>

Курс стабильный и равен 1 USD = 35 руб.

Таким образом нужно находить число, умножать его на 35. Затем находить слово USD и заменять его на руб.

Kolyaj 05.08.2009 00:44

var els = document.getElementsByTagName('p');
for (var i = 0; i < els.length; i++) {
    if (els[i].className == 'i-price') {
        els[i].innerHTML = els[i].innerHTML.replace(/([\d.]+) USD/, function(all, price) {
            return (parseFloat(price) * 35) + ' руб.';
        });
    }
}

stepan86 05.08.2009 01:29

к сожалению не работает (

вставил в head
<script type="text/javascript">
var els = document.getElementsByTagName('p');
for (var i = 0; i < els.length; i++) {
    if (els[i].className == 'i-price') {
        els[i].innerHTML = els[i].innerHTML.replace(/([\d.]+) USD/, function(all, price) {
            return (parseFloat(price) * 35) + ' руб.';
        });
    }
}
</script>

Kolyaj 05.08.2009 08:44

Надо не в head, а после всех таких чисел.

stepan86 05.08.2009 09:33

К сожалению доступ есть только к Head
Я только туда могу скрипт добавить.

Kolyaj 05.08.2009 09:44

window.onload = function() {
    var els = document.getElementsByTagName('p');
    for (var i = 0; i < els.length; i++) {
        if (els[i].className == 'i-price') {
            els[i].innerHTML = els[i].innerHTML.replace(/([\d.]+) USD/, function(all, price) {
                return (parseFloat(price) * 35) + ' руб.';
            });
        }
    }
};

stepan86 05.08.2009 10:07

Спасибо большое. Всё работает.
Скажите как туда добавить ещё один class
Я обнаружил что у меня так же присутствует class
<p class="it-price">11.5 USD </p>
Как добавить чтоб он и его сразу заменял?

Kolyaj 05.08.2009 10:23

if (els[i].className == 'i-price' || els[i].className == 'it-price') {

stepan86 05.08.2009 10:44

большое спасибо, за оперативную помощь

sasha p. 05.08.2009 12:23

window.onload
 
window.onload - по- моему google chrome некорректоно с ним работает?

B~Vladi 05.08.2009 12:33

Цитата:

Сообщение от sasha p.
window.onload - по- моему google chrome некорректоно с ним работает?

Телепаты бухают еп... Чё конкретно не нравится в хроме?

sasha p. 05.08.2009 12:39

window.onload
 
не запускалась функция javascript по наступлению этого события - opera 9 и 10 firefox 3+ ie 6,7,8 отработали а chrome никак - пришлось убрать onload усложнять скрипт чтобы и в сhrome работало

sasha p. 05.08.2009 12:45

window.onload
 
Вспомнил - определял координаты эл-та на странице - и в хроме неверно определялось из-за того что видимо не дожидаясь полной загрузки определял координаты - визуально было видно что в конце загрузки эл-т ниже опускается а chrome фиксировал координаты не самые последние

B~Vladi 05.08.2009 12:46

Нетерпеливый какой:)

sasha p. 05.08.2009 12:48

window.onload
 
Поэтому и удивился увидев что window.onload используют или может только в специфических вещах это проявлется - и нечасто и многие с этим не сталкивались

B~Vladi 05.08.2009 12:56

скрипты имхо нужно размещать в конце html и там уже ставить onload.

sasha p. 05.08.2009 13:19

window.onload
 
Скрипты все в конце html - и вызов window.onload тоже. Может конечно что-то не так и у меня было - но вышеуказанные браузера абсолютно чисто отрабатывали мой скрипт и только из-за chrome пришлось переписывать - причём это не единственный раз когда 'мнение' chrome отличалось от мнения 3-х остальных браузеров под которые я пишу и ради этого chrome пришлось дорабатывать скрипт - хотя бы разработчики хром не добавляли своих глюков - и реализации поддерживаемые единогласно opera firefox ie не браковали

Андрей Параничев 05.08.2009 13:57

В JavaScript надо очень чутко следить за правильностью кода, поскольку некоторые браузеры позволяют делать смысловые ошибки, или нарушать спецификации, а некоторые - нет. В большинстве случаев "глюки" это ошибки кода, а не движка браузера.

Возможно у вас на странице были изображения, у которых не стояли атрибуты width и height, из-за чего после загрузки позиционирование сдвинулось, или что-то подобное.

У меня лично, с chrome проблем еще не было, кроме его (уже исправленного) бага с полупрозрачными png, и немного нестабильной реализацией canvas.


Часовой пояс GMT +3, время: 00:33.